El Capitán OS aquí. He estado tratando de encontrar una solución alternativa con la importación de Tensorflow en mi notebook ipython, pero hasta ahora no he tenido suerte.
Al igual que muchas personas en los foros, también he tenido problemas con la instalación de tensorflow debido al paquete de seis. Pude instalar después de un poco de inquietud con brew
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
Recibí un mensaje que tensorflow estaba instalado correctamente. Incluso cuando hice sudo pip install tensorflow
recibí el mensaje:
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)
Sin embargo, cuando estoy en mi notebook ipython e hice un import tensorflow
el mensaje: ImportError: No module named tensorflow
He cavado más y encontré este error en la importación también:
In [1]: import tensorflow --------------------------------------------------------------------------- ImportError Traceback (most recent call last) in () ----> 1 import tensorflow /usr/local/lib/python2.7/site-packages/tensorflow/__init__.py in () 2 # module. 3 # pylint: disable=wildcard-import ----> 4 from tensorflow.python import * /usr/local/lib/python2.7/site-packages/tensorflow/python/__init__.py in () 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 () 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 () 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 () 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
Como comentó Jonás, esto se resuelve con esto:
En macosx
Si te encuentras con:
import six.moves.copyreg as copyreg
ImportError: No module named copyreg
Solución: TensorFlow depende de protobuf que requiere seis-1.10.0. El entorno python predeterminado de Apple tiene seis 1.4.1 y puede ser difícil de actualizar. Así que recomendamos instalar una copia separada de python a través de homebrew:
brew install python
Pero recomiendo usar virtualenv para este propósito.
# On Mac: $ sudo easy_install pip # If pip is not already installed $ sudo pip install --upgrade virtualenv
A continuación, configura un nuevo entorno virtualenv. Para configurarlo en el directorio ~/tensorflow
, ejecute:
$ virtualenv --system-site-packages ~/tensorflow $ cd ~/tensorflow
Entonces activa el virtualenv:
$ source bin/activate # If using bash $ source bin/activate.csh # If using csh (tensorflow)$ # Your prompt should change
Dentro del virtualenv, instale TensorFlow:
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
Luego puede ejecutar su progtwig TensorFlow como:
(tensorflow)$ python tensorflow/models/image/mnist/convolutional.py # When you are done using TensorFlow: (tensorflow)$ deactivate # Deactivate the virtualenv $ # Your prompt should change back
Copyreg se puede encontrar en el módulo seis en Python2.
Respuesta corta, intente actualizar / instalar seis:
pip install -U six
Tal vez intente reinstalar seis. Parece que está en una ubicación diferente de sus otras bibliotecas. /Library/Python/...
vs /usr/local/lib/...
Esto probablemente significa que se instalaron seis antes de python de homebrew.
Otra forma sencilla de intentar solucionar este problema es editar el código fuente y python_message.py
y cambiar la línea import six.moves.copyreg as copyreg
from six.moves import copyreg
.
Por supuesto, es posible que necesite cambiar el permiso de este archivo de solo lectura para modificarlo.