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

2024-01-09

我正在使用蟒蛇

(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']

为什么——我该如何解决这个问题?

Context: 我正在分享dill-ed 不同计算机之间的文件。我开始得到一个ModuleNotFoundError: No module named 'dill._dill'读取本地计算机上的文件时出错。我怀疑这是因为这些文件是用新版本删除的,而我的本地计算机正在尝试用旧版本读取它们。为了测试这一点,我想升级dill在我的本地计算机上(或者使环境运行它实际声称的版本)。


感谢@Sraw 的评论。要检查实际正在读取哪个文件,请执行以下操作

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

原因可以在include路径中找到:

>>> 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

删除了旧版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Conda 包的版本信息与 __version__ 不对应 的相关文章

随机推荐