web-dev-qa-db-fra.com

Tensorflow s’installe avec succès sur mac mais obtient ImportError sur copyreg lorsqu’il est utilisé

Après avoir réussi à pip install, l'importation de la bibliothèque tensorflow échoue.

>>> 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
11
feng

Vous pouvez passer à six-1.10.x en utilisant 

easy_install -U six

Cela mettra à niveau la version actuelle de six de 1.4 à 1.10.x, requise par tensorflow. 

21
Abhilash Panigrahi

Solution: TensorFlow dépend du protobuf qui nécessite six-1.10.0. L'environnement python par défaut d'Apple comporte six-1.4.1 et peut être difficile à mettre à niveau. Nous vous recommandons donc d’installer une copie distincte de python via homebrew:

brasser installer python

ou la construction/utilisation de TensorFlow dans virtualenv comme décrit ci-dessus.

3
Evan Cater

copyreg est une fonction python3 disponible dans le module six dans python2.x, voir https://docs.python.org/2/library/copy_reg.html#module-copy_reg

Pour obtenir copyreg, vous devez installer six:

pip install -U six

(Remarque: dans python2, vous pouvez accéder à la fonction avec (i) six.copy_reg ou lorsqu'un module est importé avec six.moves.*, il conserve la syntaxe python3, c.-à-d. six.moves.copyreg.)

1
alvas

Comme aucune des solutions suggérées ne fonctionnait pour moi, j'ai changé de ligne 

import six.moves.copyreg as copyreg

à 

from six.moves import copyreg

et cela semblait résoudre le problème. Cependant, au lieu de cela, j'ai un autre ImportError qui dit

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

Il suffit de poster ceci comme réponse si quelqu'un d'autre a peut-être plus de succès dans ce domaine que moi.

0
woodenflute