Jupyter Notebook имеет неправильный sys.path, не может загружать пакеты из anaconda - PullRequest
2 голосов
/ 05 февраля 2020

РЕДАКТИРОВАТЬ: я теперь исправил эту проблему, следуя это решение

Я пытаюсь использовать Jupyter Notebook с Anaconda. Я установил anaconda, и когда я запускаю python в оболочке, он имеет правильный anadonda sys.path:

python
Python 3.7.4 (default, Aug 13 2019, 20:35:49)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print('\n'.join(sys.path))
/home/morgan/anaconda3/lib/python37.zip
/home/morgan/anaconda3/lib/python3.7
/home/morgan/anaconda3/lib/python3.7/lib-dynload
/home/morgan/anaconda3/lib/python3.7/site-packages

Однако, когда я делаю то же самое в ноутбуке Jupyter, sys.path не был обновлено с момента установки anaconda:

import sys
print ('\n'.join(sys.path))

/usr/lib/python36.zip
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload

/home/morgan/.local/lib/python3.6/site-packages
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages
/home/morgan/.local/lib/python3.6/site-packages/IPython/extensions
/home/morgan/.ipython

Это было проблемой, так как я не мог загрузить пакеты, установленные с помощью conda, в Jupyter Notebook. Я попытался использовать это решение , в котором файл ipython_config редактируется для добавления дополнительных записей в sys.path, поэтому теперь, когда я печатаю sys.path в Jupyter Notebook, он дает мне следующее:

/usr/lib/python36.zip
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload

/home/morgan/.local/lib/python3.6/site-packages
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages
/home/morgan/.local/lib/python3.6/site-packages/IPython/extensions
/home/morgan/.ipython
/home/morgan/anaconda3/lib/python3.7/site-packages /home/morgan/anaconda3/lib/python3.7 
/home/morgan/anaconda3/lib/python3.7/lib-dynload

Я обнаружил, что только /home/morgan/anaconda3/lib/python3.7/site-packages позволяет jupyter notebook находить пакеты, установленные с помощью conda, но это приводит к сбою matplotlib. Включение всех трех дополнительных адресов приводит к тому, что он вообще не может найти пакеты.

Я хотел бы иметь возможность редактировать sys.path для ноутбука Jupyter напрямую, так как с помощью этого решения я могу только добавлять строки, но не удалять уже существующие строки.

Я пробовал удаление и повторная установка Jupyter Notebook.

Я использую Ubuntu 18.04.2 LTS как Linux подсистему в Windows 10 (через нее я запускаю все, включая ноутбук Jupyter). Как видите, у меня установлено python 3.7 с anaconda и python 3.6 в .local/lib.

1 Ответ

0 голосов
/ 05 февраля 2020

Обычно это происходит, когда Jupyter Записная книжка открывается из другой python среды . В Linux вы можете работать с собственными средами

Создать python3 среду

python3 -m venv myenv

Активировать среду

source myenv/bin/activate

Установить ноутбук Jupyter в активированной среде

pip install jupyter notebook

Затем установите свои модули и откройте Блокнот Jupyter внутри этой среды с помощью

jupyter notebook команды

...