Tensorflow成功安装在mac上,但在使用时会在copyreg上获得ImportError

时间:2015-11-10 02:45:29

标签: python pip tensorflow

成功pip install后,导入tensorflow库失败。

>>> import tensorflow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/tensorflow/__init__.py", line 4, in <module>
    from tensorflow.python import *
  File "/Library/Python/2.7/site-packages/tensorflow/python/__init__.py", line 13, in <module>
    from tensorflow.core.framework.graph_pb2 import *
  File "/Library/Python/2.7/site-packages/tensorflow/core/framework/graph_pb2.py", line 8, in <module>
    from google.protobuf import reflection as _reflection
  File "/Library/Python/2.7/site-packages/google/protobuf/reflection.py", line 58, in <module>
    from google.protobuf.internal import python_message as message_impl
  File "/Library/Python/2.7/site-packages/google/protobuf/internal/python_message.py", line 59, in <module>
    import six.moves.copyreg as copyreg
ImportError: No module named copyreg

4 个答案:

答案 0 :(得分:21)

您可以使用

升级到6-1.10.x.
easy_install -U six

这会将当前版本的6从1.4升级到1.10.x,这是tensorflow所要求的。

答案 1 :(得分:3)

解决方案:TensorFlow依赖于需要6-1.10.0的protobuf。 Apple的默认python环境有6个1.4.1,可能很难升级。所以我们建议通过自制软件安装一个单独的python副本:

brew install python

或如上所述在virtualenv中构建/使用TensorFlow。

答案 2 :(得分:1)

copyreg是一个python3函数,位于six的{​​{1}}模块中,请参阅https://docs.python.org/2/library/copy_reg.html#module-copy_reg

要获得python2.x,您必须安装copyreg

six

(注意:在pip install -U six 中,您可以使用(i)python2访问该功能,或者使用six.copy_reg导入模块时,它会保留six.moves.*语法,即python3

答案 3 :(得分:0)

由于没有建议的修复程序对我有效,我改变了行

import six.moves.copyreg as copyreg

from six.moves import copyreg

这似乎解决了这个问题。但是,我得到另一个ImportError,而不是说

dlopen(/Library/Python/2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so, 2): no suitable image found.  Did find:
/Library/Python/2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so: mach-o, but wrong architecture

如果其他人可能比我更成功,那就把这个作为答案发布。