web-dev-qa-db-fra.com

Impossible d'importer Tensorflow "Aucun module nommé copyreg"

El Capitan OS ici. J'ai essayé de trouver une solution de contournement avec l'importation Tensorflow dans mon bloc-notes ipython, mais jusqu'à présent, pas de chance.

Comme beaucoup de gens dans les forums, j'ai également eu des problèmes avec l'installation de tensorflow en raison du package six. J'ai pu l'installer après une certaine agitation avec l'infusion

brew link gdbm
brew install python
rew linkapps python
Sudo pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

J'ai reçu un message indiquant que tensorflow était correctement installé. Même quand j'ai fait Sudo pip install tensorflow Je reçois le message:

Requirement already satisfied (use --upgrade to upgrade): tensorflow in /usr/local/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): six>=1.10.0 in /Library/Python/2.7/site-packages (from tensorflow)
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.9.2 in /usr/local/lib/python2.7/site-packages (from tensorflow)

Cependant, lorsque je suis sur mon bloc-notes ipython et que j'ai fait un import tensorflow Je reçois le message: ImportError: No module named tensorflow

J'ai creusé plus loin et j'ai également trouvé cette erreur lors de l'importation:

In [1]: import tensorflow
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-a649b509054f> in <module>()
----> 1 import tensorflow

/usr/local/lib/python2.7/site-packages/tensorflow/__init__.py in <module>()
      2 # module.
      3 # pylint: disable=wildcard-import
----> 4 from tensorflow.python import *

/usr/local/lib/python2.7/site-packages/tensorflow/python/__init__.py in <module>()
     11 
     12 import tensorflow.python.platform
---> 13 from tensorflow.core.framework.graph_pb2 import *
     14 from tensorflow.core.framework.summary_pb2 import *
     15 from tensorflow.core.framework.config_pb2 import *

/usr/local/lib/python2.7/site-packages/tensorflow/core/framework/graph_pb2.py in <module>()
      6 from google.protobuf import descriptor as _descriptor
      7 from google.protobuf import message as _message
----> 8 from google.protobuf import reflection as _reflection
      9 from google.protobuf import symbol_database as _symbol_database
     10 from google.protobuf import descriptor_pb2

/usr/local/lib/python2.7/site-packages/google/protobuf/reflection.py in <module>()
     56   from google.protobuf.pyext import cpp_message as message_impl
     57 else:
---> 58   from google.protobuf.internal import python_message as message_impl
     59 
     60 # The type of all Message classes.

/usr/local/lib/python2.7/site-packages/google/protobuf/internal/python_message.py in <module>()
     57 
     58 import six
---> 59 import six.moves.copyreg as copyreg
     60 
     61 # We use "as" to avoid name collisions with variables.

ImportError: No module named copyreg
12
Minh Mai

Comme l'a commenté Jonah, cela est résolu par ceci:

Sur MacOSX

Si vous rencontrez:

import six.moves.copyreg as copyreg
ImportError: No module named copyreg

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

brew install python

Mais je recommande fortement d'utiliser virtualenv à cet effet.

# On Mac:
$ Sudo easy_install pip  # If pip is not already installed
$ Sudo pip install --upgrade virtualenv

Ensuite, configurez un nouvel environnement virtualenv. Pour le configurer dans le répertoire ~/tensorflow, courir:

$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow

Activez ensuite le virtualenv:

$ source bin/activate  # If using bash
$ source bin/activate.csh  # If using csh
(tensorflow)$  # Your Prompt should change

Dans virtualenv, installez TensorFlow:

(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

Vous pouvez ensuite exécuter votre programme TensorFlow comme:

(tensorflow)$ python tensorflow/models/image/mnist/convolutional.py

# When you are done using TensorFlow:
(tensorflow)$ deactivate  # Deactivate the virtualenv

$  # Your Prompt should change back
27
Hamed MP

Copyreg se trouve dans le module six en Python2.

Réponse courte, essayez de mettre à niveau/installer six:

pip install -U six
0
Gideon

Un autre moyen simple que j'ai essayé de résoudre ce problème est de modifier le code source et python_message.py et changez la ligne import six.moves.copyreg as copyreg en from six.moves import copyreg.

Bien sûr, vous devrez peut-être modifier l'autorisation de ce fichier en lecture seule afin de le modifier.

0
eggplantelf

Essayez peut-être de réinstaller six. Il semble qu'il se trouve dans un emplacement différent de vos autres bibliothèques. /Library/Python/... contre /usr/local/lib/... Cela signifie probablement que six a été installé avant le python homebrew.

0
Russell