У меня есть virtualenv-упакованная оболочка virtualenv. Давайте назовем это тестом. Jupyter устанавливается как через мой глобальный пункт, так и через пункт virtualenv.
$ which python
/usr/bin/python
$ which pip
/usr/local/bin/pip
$ which jupyter
/usr/local/bin/jupyter
$ workon test
(test)$ which python
/home/keon/.virtualenvs/test/bin/python
(test)$ which pip
/home/keon/.virtualenvs/test/bin/pip
(test)$ which jupyter
/home/keon/.virtualenvs/test/bin/jupyter
Теперь у меня есть пакет A, установленный через / usr / local / bin / pip, и пакет B, установленный через /home/keon/.virtualenvs/test/bin/pip. (астропия и ведущий, соответственно, но я не верю, что это имеет значение)
Запускаю ноутбук Jupyter (в оболочке в тесте virtualenv). Затем я запускаю этот код в ячейке:
import astropy
import emcee
:
И получите следующую ошибку
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-12-43214a4612e2> in <module>()
1 import astropy
----> 2 import emcee
ImportError: No module named 'emcee'
В клетке я использую! Команды оболочки:
!which python
!which pip
!which jupyter
!echo "Pip freeze below:\n---------------------"
!pip freeze
Выход
/home/keon/.virtualenvs/ph20/bin/python
/usr/local/bin/pip
/usr/local/bin/jupyter
Pip freeze below:
---------------------
[snip]
astropy==3.0.3
Так что мой питон - virtualenv, но, похоже, он использует глобальный jupyter и pip.
Эта проблема, кажется, существует только в одной из моих виртуальных личностей. Если я использую другую, при работе с той же ячейкой, описанной ранее, вывод будет таким, как ожидалось:
/home/keon/.virtualenvs/test2/bin/python
/home/keon/.virtualenvs/test2/bin/pip
/home/keon/.virtualenvs/test2/bin/jupyter