簡體   English   中英

無法從 Jupyter 中的 Python 筆記本導入模塊

[英]Unable to import a module from Python notebook in Jupyter

我有一個開始使用Anaconda的環境,並在其中成功安裝了一個模塊。 我知道,因為我可以運行python然后import tensorflow 這在通過ipython時也有效。 問題是,我無法從我開始使用ipython notebookjupyter的筆記本加載模塊(即使我從活動環境執行)。

我懷疑它與ipython的設置有關,但我不知道如何調試和解決問題。 任何想法?

編輯:這是我采取的步驟:

  1. conda create --name tensorflowproblem python=2.7創建環境
  2. source activate tensorflowproblem
  3. conda install --name tensorflowproblem jupyter安裝 jupyter
  4. pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl安裝tensorflow

pipjupyter的位置:

$ 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 環境的選項:

  1. 啟動新筆記本的選項
  2. kernel > change kernel下拉列表中。

有關更多詳細信息,我發現這篇文章很有幫助!

很可能您的筆記本沒有加載正確的內核(環境)。 環境名稱顯示在右上角。 請參見下圖中的紅色圓圈。 如果這不正確,則單擊 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 按照以下步驟,

  1. 進入你的環境(激活環境)

    conda activate MyEnvironment

  2. 安裝 ipykernel

    conda install -c anaconda ipykernel

  3. 將您的環境添加到 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提供的解決方案奏效了。 基本上,需要確保兩件事 -

  1. 激活 venv 並啟動 notebook 后,確保選擇的內核顯示在 notebook 的右上角; 這是通過第 1 步完成的 --> ipython kernel install --user --name=.venv和第 2 步 --> 驗證內核規范是否在 /home/<user>/.local/share/jupyter/kernels 中可用/.venv
  2. 接下來,確保在 sys.path 中列出了 venv 的路徑。類似這樣的內容 - '/home/<user>/.venv/lib/python/site-packages'

就我而言,即使我在第 1 步中做得很好,但由於某種原因,.venv 中已安裝的軟件包被報告為不可用,因為 sys.path 沒有顯示 .venv 路徑。 因此,在重新激活 .venv 然后啟動筆記本之后,我又執行了ipython kernel install --user --name=.venv ,然后 sys.path 出現了 .venv 路徑。 在此之后,已安裝的軟件包可用於導入。

暫無
暫無

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

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