在多个虚拟环境中运行单个IPython内核

时间:2019-01-24 15:24:28

标签: python jupyter-notebook ipython atom-editor hydrogen

我的问题是,每当我启动一个新项目时,都需要在该项目的虚拟环境中安装IPython内核。这是一个问题,因为内核及其所有依赖项都在每个项目的requirements.txt中,即使它们仅用于开发而不是项目本身。例如,将一个简单的一页网站推送到Heroku仅需要flaskgunicorn及其依赖项。但是由于我正在使用Jupyter进行开发,因此最终也“需要”了IPython内核随附的所有软件包:

backcall, colorama, parso, jedi, decorator, pickleshare, six, ipython-genutils, 
traitlets, wcwidth, prompt-toolkit, pygments, ipython, tornado, jupyter-core, pyzmq, 
python-dateutil, jupyter-client, ipykernel

问题不完全是在虚拟环境中。我可以在Atom中更改环境,如果我从终端运行脚本,它就可以正常工作。但是,当我尝试直接在Jupyter笔记本中运行它时,系统级内核看不到虚拟环境中的功能。

这里是重现问题的方法。首先,创建一个虚拟环境。我使用pipenv,但也尝试了virtualenvwrapper,但结果相同。然后,切换到环境。我尝试了两种方法,两种方法都有效:

  1. 正常启动atom并使用包atom-python-virtualenv选择我的虚拟环境(需要virtualenvwrapper-win和一些配置)。
  2. 使用pipenv,在Windows cmd中运行pipenv run atom .。 (某些Atom软件包现在可能会通过该解决方案找到它们的依赖项。我通过编辑它们各自的选项以始终指向我系统的python来解决此问题。)

使用这两种方法,我都可以使用原子中的终端(我使用过platformio-ide-terminal)来确认自己处在正确的环境中,然后安装flask     点列表#显示点,设置工具和滚轮     点安装烧瓶

最后,我启动IPython内核。 Hydrogen会检测到我在系统级别安装的内核。但是,如果我在.py脚本中尝试import flask,则会得到ModuleNotFoundError

我想让内核检测到我所处的环境,并查看该环境的软件包。换句话说:

  1. 仅在我的系统环境中安装Jupyter,内核和所有开发包
  2. 启动原子/氢。由于它们安装在系统级别,因此它们应该始终能够查看Jupyter和我的内核。
  3. 启动内核,让它查看系统环境中的软件包。
  4. 杀死内核
  5. 切换到没有jupyter或内核的新环境
  6. 启动内核,该内核将检测新环境并仅查看该新环境中的软件包。

我当时想在启动时向内核发送参数,以指示要使用的Python文件夹,但它会在其所在的文件夹中查找其初始化函数。

也许是符号链接?

0 个答案:

没有答案