Мне удалось найти решение для этой проблемы.Дело в том, что IPython не virtualenv-осознает , поэтому обходной путь (который мне показался наиболее удобным) состоит в том, чтобы указать собственные ядра IPython, чтобы избежать установки по одной Jupyter Notebook для каждого virtualenv (или anaconda).среды, в вашем случае).
Jupyter опирается на некоторые "ядра" (определения, где найти двоичный файл python), которые хранятся где-то в вашей ОС.Эти файлы выглядят примерно так:
{
"display_name": "NameOfTheKernel",
"language": "python",
"argv": [
"/usr/bin/python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
]
Где /usr/bin/python
- путь к исполняемому файлу Python.Однако, поскольку эти ядра определены где-то на вашем компьютере Jupyter, они не обновляются, когда вы устанавливаете некоторые другие среды (как в случае с anaconda или virtualenv).Я обнаружил, что самый простой способ - определить собственное ядро для каждой среды, которую вы используете.Кроме того, это исключает необходимость активировать среду каждый раз, когда вы хотите ее использовать, поскольку она загружается напрямую.
Идея состоит в том, чтобы определить собственное ядро, чтобы Jupyter мог «видеть» среду,Вы создали с анакондой.Для этого выполните в bash следующую строку:
ipython kernel install --user --name=NameOfTheKernel
«NameOfTheKernel» на самом деле не имеет большого значения.Если у вас нет пакета ipython
, установите его с помощью pip, anaconda, через sudo apt install
или любым другим.
Что будет делать эта строка, так это определить собственное ядро, которое будет обнаружено jupyter.В целях иллюстрации, в Ubuntu это будет храниться в папке /home/USERNAME/.local/share/jupyter
со следующей структурой данных:
/home/USERNAME/.local/share/jupyter/kernels/
└── nameofthekernel
├── kernel.json
├── logo-32x32.png
└── logo-64x64.png
После того, как вы установили ядро, вы должны:
1)Знайте, где ваша среда была установлена Anaconda.Самый простой способ сделать это - активировать свою среду в anaconda, а затем написать «какой питон» в терминале.Это покажет полный путь к двоичному файлу.
2) Запишите этот путь в только что созданном ядре jupyter.Например, используя pluma:
pluma /home/USERNAME/.local/share/jupyter/kernels/nameofthekernel/kernel.json
Затем вы подставляете путь двоичного файла python, который вы установили с помощью anaconda, где /usr/bin/python
.
После этого, если Jupyter работал, перезапустите его.Таким образом, в следующий раз, когда вы откроете Jupyter, вы можете изменить ядро (в записных книжках, одну из вкладок в верхней части), и вы будете использовать свою среду и все, что установлено вместе с этой средой.
[TL; DR] Я сделал это с pip , но шаги для анаконды будут более или менее одинаковыми.Шаги:
#CREATE THE IPYTHON KERNELS
ipython kernel install --user --name=NameOfKernel
#IF PYTHON2 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/bin/python27|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
#IF PYTHON3 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/bin/python36|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
Или, если вы работаете со средами:
#CREATE THE IPYTHON KERNELS
ipython kernel install --user --name=NameOfKernel
#IF PYTHON2 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/envs/nameofenvironment/python27|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
#IF PYTHON3 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/envs/nameofenvironment/python36|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
ВНИМАНИЕ : Я НЕ УСТАНАВЛИВАЛ КОНДА ДЛЯ ИСПЫТАНИЯ РЕШЕНИЯ, ТАКПУТИ, ВЕДУЩИЕ К БИНАРИЯМ ФАКТИЧЕСКИХ ПИТОНОВ, МОГУТ ИЗМЕНЯТЬСЯ.Однако процедура та же самая.