簡體   English   中英

Jupyter 筆記本,錯誤的 sys.path 和 sys.executable

[英]Jupyter notebook, wrong sys.path and sys.executable

我正在嘗試在 Jupyter Notebook 中運行 python 庫的 anaconda 分發,但是當我運行筆記本時,我不斷收到 ImportErrors,因為 Z23EEEB4347BDD26BFC6B7EE9A3B755DD1Z 路徑設置為 Mac X10 的默認分發。

當我打印出 sys.path 和 sys.executable 時,它們在運行 python 與運行 jupyter notebook 時會有所不同。 例如,

from pprint import pprint as p
import sys

p(sys.path)

在 python 中執行此操作后,我得到正確的 output:

['',
 '/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 中,正確的 output:

/Users/glennraskovich/anaconda2/bin/python

但是在jupyter notebook中,sys.executable沒有設置為anaconda版本

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

我嘗試在 my.bashrc 和 .bash_profile 中設置 PATH,並使用 python 的命令,其中 jupyter 等顯示 anaconda 路徑,但 jupyter notebook 未使用 Z7E3332C5FD0270D97C964E52BA8 路徑。 這里可能是什么問題?

我想出了解決方案,因為內核設置為使用默認的 mac os x 的 python 我使用命令修復了它

python2 -m pip install ipykernel

python2 -m ipykernel install --user

對我來說,我在創建環境后安裝了 Jupyter,但隨后試圖運行從基礎環境安裝的模塊。 我通過“jupyter kernelspec list”( https://github.com/jupyter/notebook/issues/2563 )在 C:\\Users\\username\\Anaconda37\\share\\jupyter\\kernels\\python3\\kernel 找到了我的 kernel.json。 json 指向我工作環境中的 python.exe。 改變了路徑並解決了它。

是對python路徑設置的詳盡描述。

我在使用 Anaconda Navigator 和命令行時遇到了這個問題。 我在控制台中輸入“source activate”,然后使用 Anaconda Navigator 打開 Jupyter。 然而,在 Anaconda Navigator 中,我不在導致問題的正確環境中。 這是因為 Anaconda Navigator 為虛擬環境提供了自己的激活(當您單擊它們時)。 因此,您要么需要從控制台激活虛擬環境,然后從控制台啟動 Jupyter,要么需要在 Anaconda Navigator 中激活虛擬環境並從 Navigator 啟動 Jupyter。 兩種方式都有效,但不能結合使用。 :-)

我的經驗:

我在 Windows 中有一個 conda 虛擬環境,我在 Jupyter Notebook 中將其鏈接為 kernel。 但是,sys.executable 指向全局 Python 安裝可執行文件。

執行@Glenn 回答中的步驟並沒有幫助。 要解決它:

  1. 為您的環境查找可執行文件 python.exe。 我的在C:\Users\youruser\miniconda3\envs\my_conda_environment\python.exe
  2. Find the kernel.json configuration file for your environment inside C:\Users\youruser\AppData\Roaming\jupyter\kernels\yourkernel\kernel.json
  3. 修改kernel.json配置路徑,將現有的可執行路徑替換為步驟 1 中的路徑。

重啟jupyter就搞定了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM