Jupyter Notebook在虚拟环境中无法看到虚拟环境的包。

21
我正在尝试在虚拟环境中使用Jupyter Notebook。 我创建了一个新的virtualenv virtualenv ker12,并激活+安装了特定版本的keras或其他库。
另外,如在IPython笔记本中使用virtualenv所述,我执行了以下操作: pip install ipykernelpython -m ipykernel install --user --name=my-virtualenv-name 当我运行笔记本并写下! which jupyter时,输出是正确的:
/Users/myname/virtualenv/ker12/bin/python
但当我尝试导入库,例如import keras时,会出现错误。
ImportError: No module named keras
但从另一方面来看,当我写下pip freeze | grep Keras时,输出为:

Keras==1.2.0

更新 1:

这个问题与 Keras 无关,它会发生在任何其他库中(例如 pandas

如果我打印 os.path,输出如下:

<'module 'posixpath' from /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc>

从“命令行python”中,os.path 看起来是正确的

<'module 'posixpath' from '/Users/my_name/virtualenv/ker12/lib/python2.7/posixpath.pyc'>

更新 2:

如果我从终端和 jupyter 中打印 sys.path,输出也不同:

从终端中

/Users/myname/virtualenv/ker12/lib/python27.zip /Users/myname/virtualenv/ker12/lib/python2.7 /Users/myname/virtualenv/ker12/lib/python2.7/plat-darwin /Users/myname/virtualenv/ker12/lib/python2.7/plat-mac /Users/myname/virtualenv/ker12/lib/python2.7/plat-mac/lib-scriptpackages /Users/myname/virtualenv/ker12/lib/python2.7/lib-tk /Users/myname/virtualenv/ker12/lib/python2.7/lib-old /Users/myname/virtualenv/ker12/lib/python2.7/lib-dynload /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7 /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages /Users/myname/virtualenv/ker12/lib/python2.7/site-packages 来自JUPYTER "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7 /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload /usr/local/lib/python2.7/site-packages /usr/local/lib/python2.7/site-packages/IPython/extensions /Users/myname/.ipython"

尝试运行 pip freeze -l 命令(列出当前虚拟环境中的本地包) — Keras 是否还在其中? - phd
是的,Keras也会出现在pip freeze -l命令的输出中。 - Michael D
尝试使用完整的Python/Jupyter路径。请参阅此答案。 - uzadude
天啊,Python 真是一个混乱的烂摊子。 - PastExpiry.com
2个回答

27

解决方案是使用以下命令打开Jupyter Notebook:

~/virtualenv/my_venv_name/bin/jupyter-notebook


对我来说,它的意思是:bash: /home/pal/virtualenv/env1/bin/jupyter-notebook: 没有那个文件或目录。 - zabop
你确定你有这个目录吗? - Michael D
这对我没有起作用,仍然显示 ModuleNotFoundError。 - WalksB

7

安装 ipykernel 并不是最好的选择,你应该在虚拟环境内进行完整的 Jupyter 安装 (pip install jupyter)。此外,请确保不要使用 --system-site-packages 选项创建虚拟环境。

参见这个答案


@deserhaut,我添加了更多细节[更新],这可能会更清楚地解决问题的根源。 - Michael D
@MichaelD,能否分享您在“主要”的Python和虚拟环境中运行jupyter kernelspec list命令以及which jupyter的结果? - desertnaut
没有virtualenv会出现以下错误:
"Error executing Jupyter command 'kernelspec': [Errno 2] No such file or directory"
但在任何一个virtualenv环境中,输出如下:bash /Users/myname/Library/Jupyter/kernels/bash ker12 /Users/myname/Library/Jupyter/kernels/ker12 phi /Users/myname/Library/Jupyter/kernels/phi python /Users /myname /virtualenv/ tf_new/ bin/../ share /jupyter/kernels / python2 @desertnaut
- Michael D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接