[英]Unable to import a module from Python notebook in Jupyter
我有一個開始使用Anaconda
的環境,並在其中成功安裝了一個模塊。 我知道,因為我可以運行python
然后import tensorflow
。 這在通過ipython
時也有效。 問題是,我無法從我開始使用ipython notebook
或jupyter
的筆記本加載模塊(即使我從活動環境執行)。
我懷疑它與ipython
的設置有關,但我不知道如何調試和解決問題。 任何想法?
編輯:這是我采取的步驟:
conda create --name tensorflowproblem python=2.7
創建環境source activate tensorflowproblem
conda install --name tensorflowproblem jupyter
安裝 jupyterpip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
安裝tensorflow
pip
和jupyter
的位置:
$ which -a pip
/Users/dror/anaconda/envs/tensorflowproblem/bin/pip
$ which -a jupyter
/Users/dror/anaconda/envs/tensorflowproblem/bin/jupyter
請注意,目錄~/anaconda/envs/tensorflowproblem/lib/python2.7/site-packages/tensorflow
存在。
此外, python -c "import tensorflow"
和ipython -c "import tensorflow"
" 都不會產生任何類型的錯誤。
根據要求,還輸出
$ conda list -n tensorflowproblem
# packages in environment at /Users/dror/anaconda/envs/tensorflowproblem:
#
appnope 0.1.0 py27_0
backports-abc 0.4 <pip>
backports.ssl-match-hostname 3.4.0.2 <pip>
backports_abc 0.4 py27_0
decorator 4.0.4 py27_0
freetype 2.5.5 0
ipykernel 4.1.1 py27_0
ipython 4.0.0 py27_1
ipython-genutils 0.1.0 <pip>
ipython_genutils 0.1.0 py27_0
ipywidgets 4.1.0 py27_0
jinja2 2.8 py27_0
jsonschema 2.4.0 py27_0
jupyter 1.0.0 py27_0
jupyter-client 4.1.1 <pip>
jupyter-console 4.0.3 <pip>
jupyter-core 4.0.6 <pip>
jupyter_client 4.1.1 py27_0
jupyter_console 4.0.3 py27_0
jupyter_core 4.0.6 py27_0
libpng 1.6.17 0
markupsafe 0.23 py27_0
mistune 0.7.1 py27_0
nbconvert 4.0.0 py27_0
nbformat 4.0.1 py27_0
notebook 4.0.6 py27_0
numpy 1.10.1 <pip>
openssl 1.0.2d 0
path.py 8.1.2 py27_1
pexpect 3.3 py27_0
pickleshare 0.5 py27_0
pip 7.1.2 py27_0
ptyprocess 0.5 py27_0
pygments 2.0.2 py27_0
pyqt 4.11.4 py27_0
python 2.7.10 2
python.app 1.2 py27_4
pyzmq 14.7.0 py27_1
qt 4.8.7 1
qtconsole 4.1.0 py27_0
readline 6.2 2
setuptools 18.5 py27_0
simplegeneric 0.8.1 py27_0
singledispatch 3.4.0.3 py27_0
sip 4.16.9 py27_0
six 1.10.0 py27_0
sqlite 3.8.4.1 1
ssl_match_hostname 3.4.0.2 py27_0
tensorflow 0.5.0 <pip>
terminado 0.5 py27_1
tk 8.5.18 0
tornado 4.3 py27_0
traitlets 4.0.0 py27_0
wheel 0.26.0 py27_1
zeromq 4.1.3 0
zlib 1.2.8 0
此外,根據要求, sys.path
的輸出為:
['',
'/Users/user/anaconda/envs/py2/lib/python27.zip',
'/Users/user/anaconda/envs/py2/lib/python2.7',
'/Users/user/anaconda/envs/py2/lib/python2.7/plat-darwin',
'/Users/user/anaconda/envs/py2/lib/python2.7/plat-mac',
'/Users/user/anaconda/envs/py2/lib/python2.7/plat-mac/lib-scriptpackages',
'/Users/user/anaconda/envs/py2/lib/python2.7/lib-tk',
'/Users/user/anaconda/envs/py2/lib/python2.7/lib-old',
'/Users/user/anaconda/envs/py2/lib/python2.7/lib-dynload',
'/Users/user/anaconda/envs/py2/lib/python2.7/site-packages',
'/Users/user/anaconda/envs/py2/lib/python2.7/site-packages/Sphinx-1.3.1-py2.7.egg',
'/Users/user/anaconda/envs/py2/lib/python2.7/site-packages/aeosa',
'/Users/user/anaconda/envs/py2/lib/python2.7/site-packages/setuptools-17.1.1-py2.7.egg',
'/Users/user/anaconda/envs/py2/lib/python2.7/site-packages/IPython/extensions',
'/Users/user/.ipython']
嘗試以下操作:
source activate tensorflowproblem
conda install notebook ipykernel
ipython kernel install --user
聽起來您的 tensorflowproblem 環境沒有 ipython 內核,但另一個(可能是您的根)環境有。 當您啟動 Jupyter 時,它會將您放入帶有內核但沒有 tensorflow 包的環境中。 如果您還沒有運行上述幾行,您可以通過打開筆記本並運行來測試這個理論:
import sys
sys.path
如果前幾條路徑沒有顯示“envs/tensorflowproblem”作為其中的一部分,它將解釋這個問題。
對於 jupyter notebook,以下 python 包可用於管理運行 notebook 的 python 內核/anaconda 環境:
pip install environment_kernels
在您的默認環境或特定環境中運行此安裝。 啟動jupyter notebook
后,您應該在兩個地方看到您的 anaconda 環境的選項:
kernel > change kernel
下拉列表中。有關更多詳細信息,我發現這篇文章很有幫助!
我有一個類似的問題:我在 Linux 終端上安裝的每個包(使用 conda 或 pip)在 python 控制台上都可以正常工作(我可以導入),如下所示(例如):
>>> import tensorflow as tf
>>>
所以在 PYTHON3 控制台上我沒有問題:但是 Jupyter 筆記本會給出可怕的按摩錯誤
"No module named tensorflow"
我遵循上面的答案之一,並在 linux 終端上執行了以下操作:
$cd usr/local/bin
$ls
f2py pip pip2 pip2.7
現在“pip install xxx”會告訴我包已經存在,並且沒有變化。 但是由於我在 Jupyter 筆記本上使用 python3,所以我嘗試了
$pip3 install tensorflow
在 Linux 終端上,現在在我的 jupyter 筆記本上,我可以做到
import tensorflow as tf
不再有“沒有名為 tensorflow 的模塊”消息。 使用 Jupyter notebook 很棒,但導入包卻是一場噩夢。 由於上述步驟,不再是,我想我分享這個,也許我可以從類似的痛苦中拯救其他人:)。
發生這種情況是因為 Jupyter 嘗試從根目錄導入庫,而您的包位於虛擬環境中。 一個簡單的解決方法是指定安裝該庫的站點包,您必須在所有筆記本中執行此操作。
嘗試在筆記本的開頭運行這些行,指定您自己的 python 站點包路徑。
import sys
sys.path.append('/homes/es314/music_info/lib/python3.6/site-packages')
對於 Windows 用戶
我在Windows系統中遇到了同樣的問題。 發生這種情況是因為 Jupyter 筆記本在錯誤的內核中打開。
要解決此問題,您需要將新環境輸入到Jupyter Notebook Kernel List 。 按照以下步驟,
進入你的環境(激活環境)
conda activate MyEnvironment
安裝 ipykernel
conda install -c anaconda ipykernel
將您的環境添加到 Jupyter Notebook 內核列表
python -m ipykernel install --user --name=MyEnvironment
現在,每次您想在Jupyter Notebook中創建新 Notebook時,您都會看到MyEnvironment 。 您還可以通過進入Kernel > Change Kernel來訪問此環境。
關注本文了解更多詳情。
根據我在控制台中而不是在 Jupyter 中工作的模塊 xlrd 的經驗,您可以嘗試轉到系統 Python 文件夾/usr/local/bin/
,然后查找您的 Python 版本。 然后使用那里的pipXX
文件來安裝您需要的模塊。
這為我解決了
conda activate
conda install nb_conda_kernels ipykernel
conda activate 'mykernel'
conda install nb_conda_kernels ipykernel
我一直面臨同樣的問題; 在嘗試了幾種解決方案后, Alnilam提供的解決方案奏效了。 基本上,需要確保兩件事 -
ipython kernel install --user --name=.venv
和第 2 步 --> 驗證內核規范是否在 /home/<user>/.local/share/jupyter/kernels 中可用/.venv 就我而言,即使我在第 1 步中做得很好,但由於某種原因,.venv 中已安裝的軟件包被報告為不可用,因為 sys.path 沒有顯示 .venv 路徑。 因此,在重新激活 .venv 然后啟動筆記本之后,我又執行了ipython kernel install --user --name=.venv
,然后 sys.path 出現了 .venv 路徑。 在此之后,已安裝的軟件包可用於導入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.