我通过Anaconda安装了python,并希望将相当大的数据帧序列化为磁盘文件。这在Jupyter笔记本电脑上运行良好,但从Atom IDE或命令提示符下运行时失败(即python script_name.py)
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])
df.to_hdf('data.h5', key='df', mode='w')
pd.read_hdf('data.h5')
这里是错误:
line 3, in <module>
df.to_hdf('data.h5', key='df', mode='w')
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 2530, in to_hdf
pytables.to_hdf(path_or_buf, key, self, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\pytables.py", line 276, in to_hdf
path_or_buf, mode=mode, complevel=complevel, complib=complib
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\pytables.py", line 484, in __init__
tables = import_optional_dependency("tables")
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\compat\_optional.py", line 93, in import_optional_dependency
raise ImportError(message.format(name=name, extra=extra)) from None
ImportError: Missing optional dependency 'tables'. Use pip or conda to install tables.
我将hdf5.dll路径添加到环境变量列表中,但是没有运气。 pip和conda都告诉我,我有一个hdf5和表格版本,所以我不明白这段代码如何在Jupyter笔记本中运行,但不能在笔记本外部运行。顺便说一句,我与matplotlib和其他一些程序包存在类似的问题,这些程序包在Jupyter笔记本中运行时没有错误,但抛出了找不到的程序包,从命令行运行时dll丢失了错误。谁能帮忙吗?谢谢!
我的路径看起来像:
c:\users\UserID\appdata\roaming\python\python37\site-packages;
C:\ProgramData\Anaconda3\pkgs\m2w64-openssl-1.0.2.g-2\Library\mingw-w64\bin;
C:\ProgramData\Anaconda3\pkgs\pytables-3.6.1-py37h1da0976_0\Lib\site-packages\tables\;
C:\ProgramData\Anaconda3\Lib\site-packages\tables;
C:\ProgramData\Anaconda3;C:\ProgramData\Anaconda3\Scripts;
C:\ProgramData\Anaconda3\Library\usr\bin;
C:\Users\UserID\AppData\Local\atom;
C:\ProgramData\Anaconda3\Library\mingw-w64\bin;
C:\Program Files (x86)\ActiveState Komodo Edit 11\;
C:\ProgramData\Anaconda3\envs\pudl;
C:\Users\UserID\AppData\Roaming\Python\Python37\Scripts;
C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
......
C:\Users\UserID\AppData\Local\atom\bin
OS:赢10Python版本:3.7
您可能需要激活Jupyter内核所在的环境,因为它将代表您获取必要的依赖关系。
假设您已经使用conda create -n my_conda_env
创建了一个环境,则还必须使用conda activate -n my_conda_env
激活它,然后您的cmd提示符将以环境名称为前缀。
如果您不在环境中运行-我会真的推荐它-因为它可以避免某些依赖性问题。