Не удалось импортировать Tensorflow "Нет модуля с именем copyreg"
El Capitan OS здесь. Я пытаюсь найти обходной путь с импортированием Tensorflow в мой ipython-ноутбук, но пока не повезло.
Как и многие люди на форумах, у меня также возникли проблемы с установкой tensorflow из-за шести пакетов. Я смог установить после некоторого fidgeting с 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
У меня появилось сообщение о том, что shadoworflow был установлен правильно. Даже когда я сделал sudo pip install tensorflow
, я получил сообщение:
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)
Однако, когда я нахожусь на своем ноутбуке ipython, и я сделал import tensorflow
, я получил сообщение: ImportError: No module named tensorflow
Я уже вырыл и нашел эту ошибку при импорте:
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
Ответы
Ответ 1
Как прокомментировал Иона, он решил:
В MacOSX
Если вы столкнулись:
import six.moves.copyreg as copyreg
ImportError: No module named copyreg
Решение: TensorFlow зависит от protobuf, для которого требуется шесть-1.10.0. Стандартная среда python для Apple по умолчанию имеет шесть-1.4.1 и может быть сложной для обновления. Поэтому мы рекомендуем либо установить отдельную копию python через homebrew:
brew install python
Но я настоятельно рекомендую использовать virtualenv для этой цели.
# On Mac:
$ sudo easy_install pip # If pip is not already installed
$ sudo pip install --upgrade virtualenv
Затем настройте новую виртуальную среду. Чтобы настроить его в каталоге ~/tensorflow
, запустите:
$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow
Затем активируйте virtualenv:
$ source bin/activate # If using bash
$ source bin/activate.csh # If using csh
(tensorflow)$ # Your prompt should change
Внутри virtualenv установите TensorFlow:
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
Затем вы можете запустить программу TensorFlow, например:
(tensorflow)$ python tensorflow/models/image/mnist/convolutional.py
# When you are done using TensorFlow:
(tensorflow)$ deactivate # Deactivate the virtualenv
$ # Your prompt should change back
Ответ 2
Copyreg можно найти в шести модулях в Python2.
Короткий ответ, попробуйте обновить/установить шесть:
pip install -U six
Ответ 3
Возможно, попробуйте переустановить шесть. Похоже, что он находится в другом месте от ваших других библиотек. /Library/Python/...
vs /usr/local/lib/...
Это, вероятно, означает, что шесть были установлены перед домашним python.
Ответ 4
Еще один простой способ исправить это - отредактировать исходный код и python_message.py
и изменить строку import six.moves.copyreg as copyreg
на from six.moves import copyreg
.
Конечно, вам может потребоваться изменить разрешение этого файла только для чтения, чтобы его изменить.