【问题标题】:Jupyter notebook, wrong sys.path and sys.executableJupyter 笔记本,错误的 sys.path 和 sys.executable
【发布时间】:2018-03-19 23:12:54
【问题描述】:

我正在尝试在 Jupyter Notebook 中运行 python 库的 anaconda 发行版,但是当我运行笔记本时,我不断收到 ImportErrors,因为 python 路径设置为 Mac OS X 10.11 的默认发行版

当我打印出 sys.path 和 sys.executable 时,它​​们在运行 python 和运行 jupyter notebook 时会有所不同。例如,

from pprint import pprint as p
import sys

p(sys.path)

在 python 中执行此操作后,我得到了正确的输出:

['',
 '/Users/glennraskovich/anaconda2/lib/python27.zip',
 '/Users/glennraskovich/anaconda2/lib/python2.7',
 '/Users/glennraskovich/anaconda2/lib/python2.7/plat-darwin',
 '/Users/glennraskovich/anaconda2/lib/python2.7/plat-mac',
 '/Users/glennraskovich/anaconda2/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/glennraskovich/anaconda2/lib/python2.7/lib-tk',
 '/Users/glennraskovich/anaconda2/lib/python2.7/lib-old',
 '/Users/glennraskovich/anaconda2/lib/python2.7/lib-dynload',
 '/Users/glennraskovich/anaconda2/lib/python2.7/site-packages',
 '/Users/glennraskovich/anaconda2/lib/python2.7/site-packages/aeosa']

但是在 jupyter notebook 中运行时,我得到:

['',
 '/usr/local/lib/python2.7/site-packages/dask-0.11.0-py2.7.egg',
 '/usr/local/lib/python2.7/site-packages/networkx-1.11-py2.7.egg',
 '/usr/local/lib/python2.7/site-packages/six-1.10.0-py2.7.egg',
 '/usr/local/lib/python2.7/site-packages/Pillow-3.3.1-py2.7-macosx-10.11-x86_64.egg',
 '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
 '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
 '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/site-packages',
 '/Library/Python/2.7/site-packages',
 '/usr/local/lib/python2.7/site-packages/IPython/extensions',
 '/Users/glennraskovich/.ipython']

对于 sys.executable,

p(sys.executable)

在python中,正确的输出:

/Users/glennraskovich/anaconda2/bin/python

但是在jupyter notebook中,sys.executable没有设置为anaconda版本

/usr/local/opt/python/bin/python2.7

我尝试在我的 .bashrc 和 .bash_profile 中设置 PATH,并使用命令 which python、which jupyter 等显示 anaconda 路径,但 jupyter notebook 没有使用 anaconda 路径。这可能是什么问题?

【问题讨论】:

  • 您混淆了笔记本服务器的 sys.path 和正在运行的内核的 sys.path。
  • 那么它是我需要以某种方式更改的内核的 sys.path 吗?我该如何解决这个问题?

标签: python python-2.7 jupyter-notebook jupyter sys


【解决方案1】:

我找到了解决方案,因为内核设置为使用默认的 mac os x 的 python,所以我使用命令修复了它

python2 -m pip install ipykernel

python2 -m ipykernel install --user

【讨论】:

  • 注意:第二步中的--user很重要。我在没有--usersudo 的情况下尝试了第二个,但它不起作用,因为它将内核规范放入不同的目录(在 Windows 10 上,Ubuntu over WSL)。
  • 我可以验证这也解决了 virtualenv 上的问题。将它与激活的 venv“python”一起使用。唯一对我有用的解决方案。谢谢@Glenn Raskovich
【解决方案2】:

对我来说,我在创建环境后安装了 Jupyter,但随后尝试运行从基础环境安装的模块。我通过“jupyter kernelspec list”(https://github.com/jupyter/notebook/issues/2563)发现,我在 C:\Users\username\Anaconda37\share\jupyter\kernels\python3\kernel.json 的 kernel.json 指向我工作环境中的 python.exe .改变路径并解决它。

This 是对 python 路径设置的详尽描述。

【讨论】:

    【解决方案3】:

    我在使用 Anaconda Navigator 和命令行时遇到了这个问题。我在控制台中输入了“source activate”,然后使用 Anaconda Navigator 打开 Jupyter。然而,在 Anaconda Navigator 中,我没有处于导致问题的正确环境中。这是因为 Anaconda Navigator 带有自己的虚拟环境激活功能(当您单击它们时)。因此,您要么需要从控制台激活虚拟环境,然后从控制台启动 Jupyter,要么需要在 Anaconda Navigator 中激活虚拟环境,然后从 Navigator 启动 Jupyter。两种方式都有效,但不能结合使用。 :-)

    【讨论】:

      猜你喜欢
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2016-11-01
      • 2021-04-28
      相关资源
      最近更新 更多