无法从Jupyter中的Python笔记本导入模块

时间:2015-11-27 14:59:52

标签: python ipython-notebook anaconda 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
  5. 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']
    

8 个答案:

答案 0 :(得分:18)

尝试以下方法:

source activate tensorflowproblem
conda install notebook ipykernel
ipython kernel install --user

听起来你的tensorflowproblem env没有ipython内核,但另一个(可能是你的根)env确实如此。当您启动Jupyter时,它会将您带入内核的env但没有tensorflow包。如果你还没有运行上述行,你可以通过打开笔记本并运行来测试这个理论:

import sys
sys.path

如果前几条路径没有显示&#39; envs / tensorflowproblem&#39;作为其中的一部分,它将解释这个问题。

答案 1 :(得分:5)

对于jupyter笔记本,以下python包对于管理运行笔记本的python内核/ anaconda环境非常有用:

pip install environment_kernels

在默认环境或特定环境中运行此安装。启动jupyter notebook后,您应该在两个地方看到anaconda环境的选项:

  1. 启动新笔记本的选项
  2. 在现有笔记本的kernel > change kernel下拉列表中。
  3. 有关详情,我发现this post有帮助!

答案 2 :(得分:2)

我遇到了类似的问题:我在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笔记本很棒,但导入软件包一直是个噩梦。不再是由于上述步骤,我想我分享这个,也许我从类似的痛苦中拯救其他人:)。

答案 3 :(得分:1)

很可能你的笔记本没有加载正确的内核(环境)。环境名称显示在右上角。请参见下图中的红色圆圈。如果这不对,那么单击Kernel-&gt; Change Kernel并选择适当的内核。

enter image description here

答案 4 :(得分:1)

对于 Windows 用户

我在 Windows 系统中遇到了同样的问题。这是因为 Jupyter notebook 在错误的内核中打开。

要解决此问题,您需要将新环境输入 Jupyter Notebook 内核列表。按照以下步骤操作,

  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。您还可以通过进入内核 > 更改内核来访问此环境。

关注This Article了解更多详情。

答案 5 :(得分:0)

根据我在使用控制台而不是Jupyter的模块xlrd的经验,你可以尝试转到你的系统Python文件夹/usr/local/bin/,然后查找你的python版本。然后使用pipXX文件安装所需的模块。

答案 6 :(得分:0)

之所以发生这种情况,是因为当您的软件包位于虚拟环境中时,Jupyter尝试从根目录导入库。一个简单的解决方法是在所有笔记本中进行的操作是指定该库的安装位置。

尝试在笔记本的开头运行这些行,指定您自己的python站点包路径。

import sys
sys.path.append('/homes/es314/music_info/lib/python3.6/site-packages')

答案 7 :(得分:0)

这为我解决了

conda activate
conda install nb_conda_kernels ipykernel
conda activate 'mykernel'
conda install nb_conda_kernels ipykernel