TL; DR
想用不同的python设置运行Jupyter笔记本。 Python包总是全局安装。不明白为什么。 \ TL; DR
我想使用venv
运行具有不同python设置的Jupyter笔记本。请参阅此处查看official documentation。
我的系统上已经安装了Python 3.6
$ python --version
Python 3.6.1 :: Continuum Analytics, Inc.
使用以下命令创建了两个虚拟环境:
$ python3 -m venv --without-pip Documents/venv/test01
$ python3 -m venv --without-pip Documents/venv/test02
在guide之后,我尝试使用
为每个笔记本设置不同的内核$ source activate test01
(Documents/venv/test02) $ python -m ipykernel install --user --name test01 --display-name test01
但是,第二个命令失败并带有
/Users/dominik/Documents/venv/test02/bin/python: No module named ipykernel
所以,我取消了我的venv并在venv外面运行了相同的命令
$ source deactivate test01
$ python -m ipykernel install --user --name test01 --display-name test01
$ python -m ipykernel install --user --name test02 --display-name test02
在我的Jupyter笔记本中,我现在可以看到不同的内核: new kernels available
现在我正在使用test01内核创建一个新的笔记本。在笔记本内部,我尝试添加一个默认情况下在Python中不可用的模块:
$ import mord
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-a00d777a7e47> in <module>()
----> 1 import mord
ModuleNotFoundError: No module named 'mord'
这是预期的。然后我使用pip
将该软件包安装到我的test01环境中$ source activate Documents/venv/test01
(Documents/venv/test01) $ pip install mord
重新启动test01内核后导入错误消失 - 正如预期的那样。但是 - 现在这是我的问题 - 当我在import mord
笔记本上test02
打包时,也没有导入错误。为什么?
我希望只为mord
安装test01
个包。但是,它似乎是全球安装的。
查看venv文件夹,它显示没有特别添加到这些项目 venv folders
pyvenv.cfg
文件似乎也没有改变。
home = /Users/dominik/anaconda/bin
include-system-site-packages = false
version = 3.6.1
任何人都可以给我一些指示我做错了吗?
答案 0 :(得分:1)
因为您使用--without-pip
标志创建了virtualenv,虚拟环境中没有pip
可执行文件,您使用系统pip
来安装软件包。
基本上,虚拟环境不涉及您的设置,即使有两个内核规范,它们都是在virtualenv停用的情况下创建的。
设置步骤建议:创建不带--without-pip
选项的virtualenv;为每个虚拟环境安装ipykernel
,这意味着,在virtualenv激活时安装;从相应的virtualenv创建内核规范。
答案 1 :(得分:0)
在georgexsh指出我关于--without-pip
旗帜的正确方向之后,我就是这样解决的:
创建两个虚拟环境
$ python -m venv --without-pip Documents/venv/test01
$ python -m venv --without-pip Documents/venv/test02
我仍在使用--without-pip
标志,因为该命令会产生错误消息
对每个环境test01
,test02
执行以下步骤:
激活虚拟环境并手动安装pip
$ source Documents/venv/test01/bin/activate
(test01) $ curl https://bootstrap.pypa.io/get-pip.py | python
在虚拟环境中安装并运行Jupyter
(test01) $ pip install jupyter
(test01) $ jupyter notebook
在完成上述两个环境的步骤后,我测试了仅在其中一个环境中安装软件包
首先激活您要安装的环境(如果尚未激活)
$ source Documents/venv/test01/bin/activate
(test01) $ pip install numpy
numpy
包现在仅适用于test01
环境中安装的Jupyter版本。
如果发现每个环境安装一个专用内核是可选的(为了我的目的)。无论如何,这是在激活的环境中运行的步骤:
(test01) $ pip install ipykernel
(test01) $ python -m ipykernel install --user --name test01 --display-name test01
现在,在Jupyter中,您还可以创建具有不同内核类型的笔记本。