无法在Mac上安装Tensorflow

9

我检查了我的pip3和python3版本:

  (tensorflow) MacBook-Pro-de-Hector-2:tensorflow hectoresteban$ pip3 -V
    pip 10.0.1 from /Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip (python 3.7)

(tensorflow) MacBook-Pro-de-Hector-2:tensorflow hectoresteban$ python3 -V
Python 3.7.0

在我当前使用的虚拟环境中,我执行了以下操作:
pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.9.0-py3-none-any.whl

作为标准方式,pip3 install tensorflow输出以下信息:

could not find a version that satisfies the requirement tensorflow (from versions: )

使用第一种方法安装后:

(tensorflow) MacBook-Pro-de-Hector-2:tensorflow hectoresteban$ python3
>>> import tensorflow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/tensorflow/__init__.py", line 22, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "/Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/tensorflow/python/__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 114
    def TFE_ContextOptionsSetAsync(arg1, async):
                                             ^
SyntaxError: invalid syntax

什么问题?我可以下载其他软件包,比如numpy,但是无法下载Tensorflow。(MacOS 10.13.4)

1
Python 3.7目前还不支持。请安装Python 3.6:如果您已经使用Homebrew安装了Python 3,请运行brew remove python3,然后运行brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb - hoefling
如前面的评论所述,TensorFlow尚不支持Python 3.7。我刚刚在osX上使用pip安装了tensorflow==1.9和Python 3.6进行了测试,运行良好。 - BiBi
单词async在Python 3.7中成为了保留关键字。该代码适用于Python 3 <= 3.6。 - phd
@hoefling,我也遇到了Python 3.6.6的相同问题。Python 3.6.6也不被支持吗? - Sourav Bhattacharjee
3个回答

12

更新:版本1.13引入了对Python 3.7的支持

最近发布的1.13版本候选版增加了对Python 3.7的支持,特别是为MacOS 10.11及以上版本提供了预编译的CPU wheel (1.13.1链接)。安装方式与往常一样:

$ pip install tensorflow>=1.13

当前答案(更新)

tensorflow目前不支持Python 3.7。原因是:

  • tensorflow使用 async 作为函数参数名,而在Python 3.7中,asyncawait成为了保留关键字(如@phd在这个评论中所指出的),这就是为什么会出现导入错误;

  • Python 3.7更改了C API中由 tensorflow 使用的PyUnicode_AsUTF8AndSize 函数的返回类型:

    从版本3.7开始:返回类型现在为const char * 而非 char *

这意味着必须在发布适用于Python 3.7 & Linux/MacOS的 tensorflow之前修复这两个问题。您可以在此处跟踪当前状态:issue #20517

因此,如果要继续使用tensorflow,解决方案是避免Python 3.7。暂时坚持使用Python 3.6。

如果您愿意从源代码构建tensorflow: 有一个补丁提议修复了这两个问题。如果您想尝试,请按照官方文档中的安装源自TensorFlow教程进行操作,唯一的区别在于开始步骤:

  1. 克隆存储库

$ git clone https://github.com/tensorflow/tensorflow
将补丁内容复制到文件中,例如tf.patch。应用补丁:
$ git apply tf.patch
  • 按照教程的其余部分进行操作。

  • 还要注意,您将不得不构建最新的 protobuf,因为Python 3.7的支持最近被添加到其中,但未包含在任何发布版本中。编辑tensorflow/contrib/cmake/external/protobuf.cmake以将其指向当前protobuf存储库的HEAD


    1

    在macOS(包括Mojave)上安装TensorFlow v1的最简单方法!谢谢! - skabbit

    1

    尝试这个,它能够工作

    使用pip安装tensorflow-macos


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接