python - Conda 的包版本信息与 __version__ 不对应

标签 python conda dill

我在用 python

(myenv3) foo@foo:~$ which conda
/home/foo/anaconda3/bin/conda

在“myenv3”中我安装了 dill=2.8.2:

(myenv3) foo@foo:~$ conda list -n myenv3 dill
# packages in environment at /home/foo/anaconda3/envs/myenv3:
#
# Name                    Version                   Build  Channel
dill                      0.2.8.2                  py36_0    conda-forge

如果我运行 python,我将获得完全相同的环境:

(myenv3) foo@foo:~$ which python
/home/foo/anaconda3/envs/myenv3/bin/python

但如果我这样做,dill 似乎有一个旧版本:

(myenv3) foo@foo:~$ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dill
>>> dill.__version__
'0.2.7.1'

显然,该文件来自其他地方:

>>> dill.__file__
'/home/foo/.local/lib/python3.6/site-packages/dill/__init__.py'

在我的包含路径中,.local 似乎控制了特定于 conda 的文件夹:

>>> import sys
>>> sys.path
['', '/home/foo/anaconda3/envs/myenv3/lib/python36.zip', '/home/foo/anaconda3/envs/myenv3/lib/python3.6', '/home/foo/anaconda3/envs/myenv3/lib/python3.6/lib-dynload', '/home/foo/.local/lib/python3.6/site-packages', '/home/foo/anaconda3/envs/myenv3/lib/python3.6/site-packages']

为什么——我该如何解决?

上下文:我正在不同计算机之间共享 dill 编辑的文件。在本地计算机上读取文件时,我开始收到 ModuleNotFoundError: No module named 'dill._dill' 错误。我怀疑这是因为这些文件是用新版本删除的,而我的本地计算机正试图用旧版本读取它们。为了对此进行测试,我想在我的本地计算机上升级 dill(或者让环境运行它实际声明的版本)。

最佳答案

感谢@Sraw 对指针的评论。要检查实际正在读取哪个文件,请执行

>>> dill.__file__
'/home/foo/.local/lib/python3.6/site-packages/dill/__init__.py'

原因可以在包含路径中找到:

>>> import sys
>>> sys.path
['', '/home/foo/anaconda3/envs/myenv3/lib/python36.zip', '/home/foo/anaconda3/envs/myenv3/lib/python3.6', '/home/foo/anaconda3/envs/myenv3/lib/python3.6/lib-dynload', '/home/foo/.local/lib/python3.6/site-packages', '/home/foo/anaconda3/envs/myenv3/lib/python3.6/site-packages']

此特定路径对应于 pip。它应该不安装已经用 conda 安装的包,但显然它在这里犯了一个错误。我也不清楚为什么 pip 文件夹在排序中主导 conda 文件夹,但事实就是如此。

pip list

验证它安装了旧版本,并且

pip uninstall dill

删除了旧版本。

关于python - Conda 的包版本信息与 __version__ 不对应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51553668/

相关文章:

python - 为什么我收到 Typeerror : 'int' object not iterable

python - 由于缺少 pandoc,构建文档失败

python - 分段线性函数与 numpy.piecewise

python - 取消设置 Conda 中的代理

python - 使用 dill 库保存和加载 neupy 算法可以在同一时间段返回不同的预测吗?

python - 如何将枚举名称用作其他信息的值

python - 如何解决 Open AI 健身房安装问题?

fish - 将 conda 添加到 fish 中的路径

python - 类型错误 : can't pickle PyCapsule objects

python - 钻孔错误。在内建中找不到它