Информация о версии Conda на упаковке не соответствует __version__
Я использую анаконду
(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
на моем локальном компьютере (или заставьте среду работать в той версии, в которой она на самом деле заявляет).
1 ответ
Спасибо за комментарий @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
удалил эту старую версию.