我的问题是,每当我启动一个新项目时,都需要在该项目的虚拟环境中安装IPython内核。这是一个问题,因为内核及其所有依赖项都在每个项目的requirements.txt中,即使它们仅用于开发而不是项目本身。例如,将一个简单的一页网站推送到Heroku仅需要flask
,gunicorn
及其依赖项。但是由于我正在使用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
,但结果相同。然后,切换到环境。我尝试了两种方法,两种方法都有效:
virtualenvwrapper-win
和一些配置)。pipenv run atom .
。 (某些Atom软件包现在可能会通过该解决方案找到它们的依赖项。我通过编辑它们各自的选项以始终指向我系统的python来解决此问题。)使用这两种方法,我都可以使用原子中的终端(我使用过platformio-ide-terminal
)来确认自己处在正确的环境中,然后安装flask
点列表#显示点,设置工具和滚轮
点安装烧瓶
最后,我启动IPython内核。 Hydrogen会检测到我在系统级别安装的内核。但是,如果我在.py脚本中尝试import flask
,则会得到ModuleNotFoundError
。
我想让内核检测到我所处的环境,并查看该环境的软件包。换句话说:
我当时想在启动时向内核发送参数,以指示要使用的Python文件夹,但它会在其所在的文件夹中查找其初始化函数。
也许是符号链接?