【问题标题】:jupyter notebook running kernel in different envjupyter notebook 在不同的环境中运行内核
【发布时间】:2016-10-19 21:08:33
【问题描述】:

我让自己陷入了某种可怕的虚拟环境中。救命?!

我使用conda 管理环境。直到最近,我只有一个 python2 jupyter notebook 内核,但我决定把自己拖到 21 世纪并安装一个 python3 内核;我忘记了我是怎么做到的。

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

所以我在这里,愉快地尝试从我闪亮的新 python3 内核中使用漂亮的汤,我似乎无法做任何事情来获得它在其中找到包的任何环境。即(全部来自笔记本) :

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'

好的,好的,我将使用 shell 魔法安装它。正确的?正确的?

! 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'

哦,不。即使我运行的是 python3 内核,它是否认为我在 2.7 环境中?那不行。

! 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

好的,我可以解决这个问题。其中之一是 3.5 环境。

! 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  

关于……

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

更多关于...

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'

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

谢谢!

【问题讨论】:

标签: python packages jupyter conda virtual-environment


【解决方案1】:

这是 ipython / Jupyter 的一个棘手部分。可用的内核集与启动 jupyter Notebook 时的 virtualenv 无关。诀窍是在您想要对 jupyter 唯一标识的环境中设置 ipykernel 包。来自docs on multiple ipykernels

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

如果你只想拥有一个 Python 3 内核,在 conda 环境中,只需使用 python -m ipykernel install --user,它会将默认 python 重置为 virtualenv 中的那个。

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

另见Using both Python 2.x and Python 3.x in IPython Notebook

【讨论】:

  • 谢谢!像魅力一样工作。
  • 我还发现我没有将jupyter安装到新环境中,但它仍然使用'juptyer notebook'命令启动。所以,我一开始并没有意识到。
  • 感谢一百万的回答!
  • 它可以工作,但我不明白 Jupyter 如何找到通往环境的路径。 kernel.json文件中没有提到。
【解决方案2】:

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

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

conda create --name ENVNAME python=PYTHONVERSION jupyter

当您使用 ipython 或 jupyter notebook 时,将使用正确的内核。

【讨论】:

    【解决方案3】:

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

    argv 键中。

    【讨论】:

    • 如果我可以投票 5 次,我会的。我有 Visual Studio Code,以 Windows 子系统作为控制台,我安装了 virtualenv,然后是 jupyter,然后我无法使用 virtualenv 中的库。这解决了它!
    【解决方案4】:

    这里还有一个简单的方法

    workon my-virtualenv-name  # activate your virtualenv, if you haven't already
    pip install tornado==4.5.3
    pip install ipykernel==4.8.2
    

    您现在应该能够在 IPython 笔记本菜单中看到您的内核:内核 -> 更改内核并能够切换到它(您可能需要刷新页面才能显示在列表中)。从那时起,IPython 会记住该笔记本使用哪个内核。

    这对我有用。 source

    【讨论】:

    • workon 不起作用 - 你知道我尝试过搜索的任何解决方案,但它不起作用我正在使用 vs 代码
    【解决方案5】:
    pip install --user ipykernel
    python -m ipykernel install --user --name=myenv
    
    Output
    Installed kernelspec myenv in /home/user/.local/share/jupyter/kernels/myenv
    

    然后转到上面的目录 打开 kernel.json

    {
     "argv": [
      "/home/user/anaconda3/envs/myenv/bin/python", # path to your virtual environment python
      "-m",
      "ipykernel_launcher",
      "-f",
      "{connection_file}"
     ],
     "display_name": "myenv",
     "language": "python"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 2019-06-06
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2020-07-04
      相关资源
      最近更新 更多