【问题标题】:Trouble with TensorFlow in Jupyter NotebookJupyter Notebook 中的 TensorFlow 问题
【发布时间】:2016-05-05 22:08:08
【问题描述】:

我之前通过 Anaconda 在 Ubuntu 14.04 中安装了 Jupyter 笔记本,刚刚安装了 TensorFlow。无论我是在笔记本上工作还是简单地编写脚本,我都希望 TensorFlow 能够正常工作。为了实现这一点,我最终安装了两次 TensorFlow,一次使用 Anaconda,一次使用 pip。 Anaconda 安装有效,但我需要在任何对 python 的调用前加上“source activate tensorflow”。并且 pip 安装效果很好,如果以标准方式(在终端中)启动 python,那么 tensorflow 加载就好了。

我的问题是:我怎样才能让它在 Jupyter 笔记本中也能工作?

这让我想到了一个更普遍的问题:我在 Jupyter/Anaconda 中的 python 内核似乎与系统范围内使用的 python 内核(或环境?不确定这里的术语)是分开的。如果这些一致就好了,这样如果我安装一个新的 python 库,它就可以通过我运行 python 的所有不同方式访问。

【问题讨论】:

  • 你得到了什么错误信息?不能在 Jupyter 中导入 tensorflow?
  • ------------------------------------------ --------------------------------- ImportError Traceback(最近一次调用最后)() ----> 1 import tensorflow as tf ImportError: No module named tensorflow

标签: python tensorflow jupyter


【解决方案1】:

更新

TensorFlow website 支持五种安装。

据我了解,直接使用Pip installation 可以在 Jupyter Notebook 中导入 TensorFlow(只要安装了 Jupyter Notebook 并且没有其他问题)b/z 它没有创建任何虚拟环境。

使用 virtualenv installconda install 需要将 jupyter 安装到新创建的 TensorFlow 环境中,以允许 TensorFlow 在 Jupyter Notebook 中工作(有关更多详细信息,请参阅以下原始帖子部分)。

我相信docker install 可能需要在 VirtualBox 中设置一些端口才能使 TensorFlow 在 Jupyter Notebook 中工作 (see this post)。

对于installing from sources,还取决于源代码构建和安装到哪个环境。如果它安装在新创建的虚拟环境中或未安装 Jupyter Notebook 的虚拟环境中,则还需要将 Jupyter Notebook 安装到虚拟环境中才能在 Jupyter Notebook 中使用 Tensorflow。

原帖

要在 Ipython 和/或 Jupyter(Ipython) Notebook 中使用 tensorflow,您需要在 tensorflow 激活环境下安装 Ipython 和 Jupyter(安装 tensorflow 后)。

在tensorflow环境下安装Ipython和Jupyter之前,如果你在终端执行以下命令:

username$ source activate tensorflow

(tensorflow)username$ which ipython
(tensorflow)username$ /Users/username/anaconda/bin/ipython

(tensorflow)username$ which jupyter
(tensorflow)username$ /Users/username/anaconda/bin/jupyter

(tensorflow)username$ which python
(tensorflow)username$ /User/username//anaconda/envs/tensorflow/bin/python

这告诉您,当您从终端打开 python 时,它使用的是安装在安装 tensorflow 的“环境”中的那个。因此,您实际上可以成功导入 tensorflow。但是,如果您尝试运行 ipython 和/或 jupyter 笔记本,它们不会安装在配备 tensorflow 的“环境”下,因此它必须返回使用没有 tensorflow 模块的常规环境,因此您会得到一个导入错误。

您可以通过列出 envs/tensorflow/bin 目录下的项目来验证这一点:

(tensorflow) username$ ls /User/username/anaconda/envs/tensorflow/bin/

您会看到没有列出“ipython”和/或“jupyer”。

要将 tensorflow 与 Ipython 和/或 Jupyter notebook 一起使用,只需将它们安装到 tensorflow 环境中:

(tensorflow) username$ conda install ipython
(tensorflow) username$ pip install jupyter #(use pip3 for python3)

安装它们后,在 envs/tensorflow/bin/ 目录中应该会出现一个“jupyer”和一个“ipython”。

注意事项: 在尝试在 jupyter notebook 中导入 tensorflow 模块之前,请尝试关闭 notebook。并且首先“source deactivate tensorflow”,然后重新激活它(“source activate tensorflow”)以确保事情“在同一页面上”。然后重新打开笔记本并尝试导入 tensorflow。它应该成功导入(至少在我的工作)。

【讨论】:

  • 这实际上帮助了我。非常感谢中宇
  • 有趣的是,当我使用 virtualenv 和 python3.4 安装 tensorflow 时,您关于停用然后重新激活的建议对我有用!但是对于另一个使用 python2 的安装,它就不起作用了!
  • @Hossein 你用的是什么安装? TensorFlow website 介绍了五种安装方式。我认为如果您使用 pip 安装,则无需执行停用操作。 Virtualenv 和 conda 安装需要这个。我在某处读到 docker 安装需要在虚拟框上设置一些门户以启用 jupyter,我不太确定从源安装..
  • @Zhongyukuang:我相信对于python2,我使用了anaconda版本,我几乎安装了所有东西。两者,pip,conda,我刚从最顶层开始,并安装了所有这些以使其正常工作!并失败了。然后我创建了一个新的 ubuntu 用户并直接进入 virtualenv,感谢上帝,它成功了。我猜我的操作系统或那个特定的用户帐户搞砸了!
  • @Hossein 嗯...这很有趣。我在我的 Mac OS 中安装了 conda python 2.7,所以我只使用了 TensorFlow 的 conda 安装。事情进展顺利。我想我不知道你的 python 2.7 TF 安装尝试出了什么问题。但我很高兴听到您最终成功了!
【解决方案2】:

我在 virtualenv 中使用了以下这些。

pip3 install --ignore-installed ipython
pip3 install --ignore-installed jupyter

这会在我的 tensorflow 虚拟环境中重新安装 ipython 和 jupyter notebook。安装后可以通过which ipythonwhich jupyter进行验证。 bin 将位于虚拟环境下。

注意我使用的是 python 3.*

【讨论】:

    【解决方案3】:

    我有另一种解决方案,在每次使用 jupyter notebook 之前,您不需要 source activate tensorflow

    第 1 部分

    首先,你应该确保你已经在你的 virtualenv 中安装了 jupyter。如果已经安装,可以跳过这部分(使用which jupyter查看)。如果没有,您可以运行source activate tensorflow,然后通过conda install jupyter 在您的virtualenv 中安装jupyter。 (你也可以使用pip。)

    第 2 部分

    1.在你的 virtualenv 中,运行

    username$ source activate tensorflow
    (tensorflow)username$ ipython kernelspec install-self --user
    

    这将为您的 virtualenv 创建一个内核规范并告诉您它在哪里:

    (tensorflow)username$ [InstallNativeKernelSpec] Installed kernelspec pythonX in /home/username/.local/share/jupyter/kernels/pythonX
    

    pythonX 将匹配您 virtualenv 中的 Python 版本。

    2.将新的内核规范复制到有用的地方。为您的新内核选择一个kernel_name,该内核不是python2python3 或您之前使用过的内核:

    (tensorflow)username$ mkdir -p ~/.ipython/kernels
    (tensorflow)username$ mv ~/.local/share/jupyter/kernels/pythonX ~/.ipython/kernels/<kernel_name>
    

    3.如果您想更改 IPython 显示的内核名称,您需要编辑 ~/.ipython/kernels/&lt;kernel_name&gt;/kernel.json 并将名为 display_name 的 JSON 键更改为您喜欢的名称。

    4.您现在应该能够在 IPython 笔记本菜单中看到您的内核:Kernel -&gt; Change kernel 并能够切换到它(您可能需要刷新页面才能显示在列表中)。从那时起,IPython 会记住该笔记本使用哪个内核。

    Reference.

    【讨论】:

      【解决方案4】:

      这是我在 Anaconda -> Jupyter 中启用 tensorflow 所做的。

      1. 使用
      2. 提供的说明安装 Tensorflow
      3. 转到 /Users/username/anaconda/env 并确保已安装 Tensorflow
      4. 打开 Anaconda 导航器并转到“环境”(位于左侧导航中)
      5. 在第一个下拉菜单中选择“全部”并搜索 Tensorflow
      6. 如果未启用,请在复选框中启用它并确认接下来的过程。
      7. 现在打开一个新的 Jupyter 笔记本,tensorflow 应该可以工作了

      【讨论】:

        【解决方案5】:

        您的 Anaconda 安装可能与您的 Python 安装进入了不同的目录

        例如在我的机器上,我可以在这里找到位置

        yaroslavvb-macbookpro:~ yaroslavvb$ which ipython
        /Users/yaroslavvb/anaconda/bin/ipython
        

        当您键入 python 时,它会尝试以从左到右的顺序在 PATH 中找到它。因此,您可能在 Anaconda 文件夹之前的文件夹中有另一个版本的 python,它会使用它。要修复,您可以通过export PATH=.... 更改路径,并将Anaconda 目录放在前面,以便从那里获取python 而不是默认的,即

        export PATH=/Users/yaroslavvb/anaconda/bin:$PATH
        

        【讨论】:

        • 好的,谢谢,我认为这是问题所在。之后,我收到一条不同的错误消息,这次与“ImportError: numpy.core.multiarray failed to import”有关(实际的错误消息相当长)。
        • 我认为我有相反的问题,我认为当我启动 Jupyter 时,python 内核正在使用 anaconda 路径中的 python 安装,但我想改用 /usr/bin 中的 python路径。
        【解决方案6】:

        我使用 Conda conda install pip 而不是 apt-get install python-pip python-dev 安装了 PIP。

        然后安装tensorflow 使用Pip Installation:

        # Ubuntu/Linux 64-bit, CPU only, Python 2.7 
        $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl
        # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7 
        # Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below. 
        $ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl
        

        ...

        pip install --upgrade $TF_BINARY_URL

        然后它将在 jupyter notebook 中工作。

        【讨论】:

        • 如果你使用 conda,你应该避免做任何“sudo”。除非您明确尝试进行一些系统范围的安装,否则您永远不需要 sudo 权限。它大多只会导致混乱和权限错误。
        • @msarahan 谢谢!我改了。
        • 我使用anaconda,然后在safari等internet explorer上tensorflow无法导入jupiter notebook。 (如果我使用终端打开“ipython”,则可以导入 Tensorflow!)。无论如何,使用 pip install 后,问题解决了。tensorflow.org/versions/r0.11/get_started/…
        【解决方案7】:

        接受的答案(由钟宇匡)刚刚帮助了我。在这里,我创建了一个 environment.yml 文件,使我能够使这个 conda / tensorflow 安装过程可重复。

        第 1 步 - 创建 Conda environment.yml 文件

        environment.yml 看起来像这样:

        name: hello-tensorflow
        dependencies:
          - python=3.6
          - jupyter
          - ipython
          - pip:
            - https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.1.0-cp36-cp36m-linux_x86_64.whl
        

        注意:

        • 只需将名称替换为您想要的任何名称。 (我的是hello-tensorflow
        • 只需将 python 版本替换为您想要的任何版本。 (我的是3.6
        • 只需将 tensorflow pip 安装 URL 替换为您想要的任何内容(我的是 TensorFlow URL,其中 Python 3.6 支持 GPU)

        第 2 步 - 创建 Conda 环境

        environment.yml 位于您所在的当前路径中,此命令将创建环境 hello-tensorflow(或您将其重命名为的任何内容):

        conda env create -f environment.yml
        

        第 3 步:源激活

        激活新创建的环境:

        source activate hello-tensorflow
        

        第 4 步 - 哪个 python / jupyter / ipython

        哪个蟒蛇...

        (hello-tensorflow) $ which python
        /home/johnny/anaconda3/envs/hello-tensorflow/bin/python
        

        哪个jupyter...

        (hello-tensorflow) $ which jupyter
        /home/johnny/anaconda3/envs/hello-tensorflow/bin/jupyter
        

        哪个 ipython...

        (hello-tensorflow) $ which ipython
        /home/johnny/anaconda3/envs/hello-tensorflow/bin/ipython
        

        第 5 步

        您现在应该可以从 python、jupyter(console / qtconsole / notebook 等)和 ipython 导入 tensorflow。

        【讨论】:

          【解决方案8】:

          我认为您的问题与此处的问题帖子非常相似。 Windows 7 jupyter notebook executing tensorflow。正如雅罗斯拉夫所说,你可以试试

          conda install -c http://conda.anaconda.org/jjhelmus tensorflow.

          【讨论】:

            【解决方案9】:

            我在使用自定义 Ubuntu 16 图像时遇到了类似的问题。该问题与我的系统上已安装的现有numpy 版本有关。

            我最初尝试过

            sudo pip3 install tensorflow
            

            这导致了以下异常:

            例外: 回溯(最近一次通话最后): 文件“/anaconda/envs/py35/lib/python3.5/shutil.py”,第 538 行,在移动中 os.rename(src, real_dst) PermissionError: [Errno 13] Permission denied: '/anaconda/envs/py35/lib/python3.5/site-packages/numpy' -> '/tmp/pip-co73r3hm-uninstall/anaconda/envs/py35/lib/python3 .5/site-packages/numpy'

            文档建议,如果您在使用此命令时遇到任何问题,请尝试以下操作:

            sudo pip3 install --upgrade \ 
            https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp35-cp35m-linux_x86_64.whl
            

            但是,我的系统无法找到pip3

            sudo: 找不到 pip3 命令

            最佳解决方案是为 pip3 创建一个symlink

            sudo ln -s /anaconda/envs/py35/bin/pip3.5 /usr/local/bin/pip3
            

            最后,以下命令顺利运行

            sudo /usr/local/bin/pip3 install --upgrade \ 
            https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp35-cp35m-linux_x86_64.whl
            

            我在terminal 中验证了安装,并在我的Jupyter Notebook 中验证了成功导入

            import tensorflow as tf
            

            【讨论】:

              【解决方案10】:

              我想知道从 tensorflow 环境中简单地启动 ipython 是否还不够。那是 1)首先激活tensorflow virtualenv:

              source ~/tensorflow/bin/activate
              

              2) 在tensorflow环境下启动ipython

              (tensorflow)$ ipython notebook --ip=xxx.xxx.xxx.xxx
              

              【讨论】:

                【解决方案11】:

                我从别人的帖子中找到了解决方案。它很简单,效果很好!

                http://help.pythonanywhere.com/pages/IPythonNotebookVirtualenvs

                只需在命令提示符中安装以下内容,然后在 Jupyter Notebook 中将内核更改为 Python 3。它将成功导入tensorflow。

                pip install tornado==4.5.3

                pip install ipykernel==4.8.2

                (原帖:https://github.com/tensorflow/tensorflow/issues/11851

                【讨论】:

                  【解决方案12】:

                  Jupyter 实验室:ModuleNotFound tensorflow

                  对于遇到此问题的我或同事的未来版本:

                  conda install -c conda-forge jupyter jupyterlab keras tensorflow
                  

                  原来jupyterlabjupyter 的插件。

                  因此,即使您处于具有jupyter没有 jupyterlab 的环境中,如果您尝试运行:

                  jupyter lab
                  

                  然后jupyter 将在(base) 环境中查找jupyterlab 插件。

                  那么您在 jupyter lab 中的导入将与该插件相关,而不是您的 conda 环境。

                  【讨论】:

                    【解决方案13】:
                    pip install tensorflow
                    

                    这在我的 conda 虚拟环境中对我有用。

                    我试图在已安装 jupyter notebooks 的 conda 虚拟环境中使用conda install tensorflow,导致许多冲突和失败。但是 pip install 工作正常。

                    【讨论】:

                      【解决方案14】:

                      打开 Anaconda 提示屏幕: (base) C:\Users\YOU&gt;conda create -n tf tensorflow

                      环境创建后输入:conda activate tf

                      提示移动到(tf)环境,即:(tf) C:\Users\YOU&gt;

                      然后在这个 (tf) 环境中安装 Jupyter Notebook: conda install -c conda-forge jupyterlab - jupyter notebook

                      还是在 (tf) 环境中,也就是 type (tf) C:\Users\YOU&gt;jupyter notebook

                      笔记本屏幕启动!!

                      一个新的笔记本然后可以import tensorflow

                      从那时起 打开会话 点击 Anaconda 提示, 输入conda activate tf

                      提示移动到 tf 环境 (tf) C:\Users\YOU&gt;

                      然后输入(tf) C:\Users\YOU&gt;jupyter notebook

                      【讨论】:

                      • 您的答案存在一些格式问题。尝试改进它。使用` 括号表示路径和代码片段。要突出显示应用的名称或界面,请使用 粗体** 括号)或 斜体* 括号)字体。要从新行开始,请在行尾使用 double space - 这个问题会比在任何地方使用 Enter 更清楚。添加一些: 也很好。
                      • 我知道我的帖子整理得不好。 Y 只是想贡献一个简单实现的答案,并在此过程中学习如何为 SO 做出贡献。非常感谢您的编辑。
                      最近更新 更多