jupyter笔记本在不同的环境中运行内核

Pau*_*der 42 python packages conda jupyter virtual-environment

我已经陷入了某种可怕的虚拟混乱.救命?!

我管理环境conda.直到最近,我才有了一个python2 jupyter笔记本内核,但我决定将自己踢到21世纪,并安装了一个python3内核; 我忘了我是怎么做到的.

我的主要(anaconda)python默认为2.7.

所以在这里,我很乐意尝试在我的闪亮的新python3内核中使用美丽的汤,我似乎无法做任何事情来找到它所在的任何环境.Viz(全部来自笔记本):

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'
Run Code Online (Sandbox Code Playgroud)

好的,好的,我将使用shell magic安装它.对?对?

! pip install bs4

--> Collecting bs4
  Downloading bs4-0.0.1.tar.gz
Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages (from bs4)
[...]
Successfully built bs4
Installing collected packages: bs4
Successfully installed bs4-0.0.1

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'
Run Code Online (Sandbox Code Playgroud)

不好了.即使我正在运行python3内核,它是否认为我在2.7 env?那不行.

! conda info --envs
--> # conda environments:
#
flaskenv                 /Users/[MY-USER]/anaconda/envs/flaskenv
mesa                     /Users/[MY-USER]/anaconda/envs/mesa
py35                     /Users/[MY-USER]/anaconda/envs/py35
root                  *  /Users/[MY-USER]/anaconda
Run Code Online (Sandbox Code Playgroud)

好的,我可以解决这个问题.其中一个是3.5 env.

! source activate py35
--> prepending /Users/[MY-USER]/anaconda/envs/py35/bin to PATH

! conda install beautifulsoup4
--> Fetching package metadata .......
Solving package specifications: ..........

# All requested packages already installed.
# packages in environment at /Users/[MY-USER]/anaconda:
#
beautifulsoup4            4.4.1                    py27_0  
Run Code Online (Sandbox Code Playgroud)

关于...

! pip install bs4
--> Requirement already satisfied (use --upgrade to upgrade): bs4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

更关心......

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'
Run Code Online (Sandbox Code Playgroud)

ARRGH! headdesk 我是否必须杀死内核以解决这个问题(并重新运行一些工作)?杀死内核甚至会起作用吗?如何让我的jupyter内核知道它应该在什么环境下运行?

谢谢!

tsc*_*ler 115

这是ipython/Jupyter的一个棘手的部分.可用的内核集独立于启动jupyter Notebook时的virtualenv.诀窍是在你想要为jupyter唯一标识自己的环境中设置ipykernel包.从多个ipykernels上的文档,

source activate ENVNAME
pip install ipykernel
python -m ipykernel install --user --name ENVNAME --display-name "Python (whatever you want to call it)"
Run Code Online (Sandbox Code Playgroud)

如果您只想拥有一个Python 3内核,那么只需使用python -m ipykernel install --user它就可以将默认的python重置为virtualenv中的python.

是的,您需要重新启动内核并重新运行前面的步骤.

另请参阅在IPython Notebook中使用Python 2.x和Python 3.x.

  • 谢谢!工作就像一个魅力. (2认同)
  • 非常感谢你,你救了我的一天! (2认同)
  • 我还发现我没有将 jupyter 安装到新环境中,但它仍然使用“juptyer notebook”命令启动。所以,一开始我并没有意识到这一点。 (2认同)

Ant*_*aux 9

如果您的环境已经创建,@ tschundler的解决方案可以完美运行.

如果要在创建虚拟环境时更改默认内核并避免任何手动配置,则只需jupyter在conda命令的末尾添加:

conda create --name ENVNAME python=PYTHONVERSION jupyter

当您使用ipython或jupyter笔记本时,将使用正确的内核.


mar*_*xor 7

在我的情况下,jupyter 无法“选择”虚拟环境的 python。所以我不得不编辑~/.local/share/jupyter/kernels/{my_env_name}/kernel.json 并添加解释器的路径

argv关键。

  • 如果我能投 5 票的话我会的。我有 Visual Studio Code,以 Windows 子系统作为控制台,我安装了 virtualenv,然后安装了 jupyter,然后我无法使用 virtualenv 中的库。这解决了它! (2认同)