【问题标题】:Unable to import a module from Python notebook in Jupyter无法从 Jupyter 中的 Python 笔记本导入模块
【发布时间】:2016-03-01 19:31:08
【问题描述】:

我有一个开始使用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']

【问题讨论】:

  • I know it, because I can run python and then import tensorflow - 这并不表明安装到环境中有效。请告诉我们您从激活环境到安装和运行 ipython notebook 的所有步骤。
  • 您能否通过source activate tensorflowproblem 激活您的环境,然后运行which -a pip which -a jupyter 并将输出添加到您的问题中。
  • 您是否收到来自python -c "import tensorflow"ipython -c "import tensorflow" 的任何错误?
  • 但是,当您运行ipython notebook 并输入import tensorflow 时,您会收到错误消息吗?我以前从未见过这样的事情。你能在新单元格中输入ipython notebook 并打印出sys.path 吗?
  • 补充一下,我也有同样的问题。我可以在 python 环境中运行它,但不能在 python 环境中运行。我在 Mac el capitan。

标签: python ipython-notebook anaconda jupyter


【解决方案1】:

这帮我解决了

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

【讨论】:

    【解决方案2】:

    对于 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 中创建新笔记本时都会看到 MyEnvironment。您也可以通过进入 Kernel > Change Kernel 来访问此环境。

    关注This Article了解更多详情。

    【讨论】:

      【解决方案3】:

      发生这种情况是因为 Jupyter 尝试从根目录导入库,而您的包位于虚拟环境中。一个简单的解决方法是指定安装该库的站点包,您必须在所有笔记本中执行此操作。

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

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

      【讨论】:

        【解决方案4】:

        我遇到了类似的问题:我在 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 notebook 上使用 python3,所以我尝试了

        $pip3 install tensorflow
        

        在 Linux 终端上,现在在我的 jupyter 笔记本上我可以做到

        import tensorflow as tf
        

        不再有“没有名为 tensorflow 的模块”消息。使用 Jupyter notebook 很棒,但导入包却是一场噩梦。由于上述步骤,不再是,我想我分享这个,也许我可以从类似的痛苦中拯救其他人:)。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

              对于 jupyter notebook,以下 python 包可用于管理运行 notebook 的 python 内核/anaconda 环境:

              pip install environment_kernels
              

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

              1. 启动新笔记本的选项
              2. 在现有笔记本的 kernel &gt; change kernel 下拉列表中。

              更多详情,我发现this post 很有帮助!

              【讨论】:

              • 这是一个很棒的 Jupyter 扩展,网页 http://stuartmumford.uk/blog/jupyter-notebook-and-conda.html 帮助我调试了很多引用错误内核的问题,结果导致几天出现“未找到模块”错误。
              【解决方案8】:

              尝试以下方法:

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

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

              import sys
              sys.path
              

              如果前几条路径没有显示“envs/tensorflowproblem”作为其中的一部分,则可以解释问题。

              【讨论】:

              • 好的,那么如何从 ipython notebook 中查看我在哪个 conda 环境中,以及如何从另一个 conda 环境中启动 notebook?
              • 使用 conda 而不是 pip 安装 jupyter 为我修复了它。一般来说,最好尽可能使用 anaconda 来安装软件包。
              猜你喜欢
              • 2020-11-22
              • 2021-04-24
              • 2021-02-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-07-30
              • 1970-01-01
              • 2021-02-10
              相关资源
              最近更新 更多