2015-11-11 9 views
12

El Capitan OS tutaj. Próbowałem znaleźć obejście z importowaniem Tensorflow do mojego notatnika do ipythona, ale jak dotąd nie miałem szczęścia.Nie można zaimportować Tensorflow "Brak modułu o nazwie copyreg"

Podobnie jak wiele osób na forach, miałem również problemy z instalacją tensorflow ze względu na sześć pakietów. Udało mi się zainstalować po pewnym wiercić z wywaru

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 

Dostałem wiadomość, że tensorflow został poprawnie zainstalowany. Nawet kiedy nie sudo pip install tensorflow otrzymuję komunikat:

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) 

Jednak gdy jestem w ipython notebooka i Zrobiłem import tensorflow otrzymuję komunikat: ImportError: No module named tensorflow

ja wykopał dalej i okazało się to błąd przy imporcie również:

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 
+0

Czy można importować TF normalnie z powłoki (jeśli tak, to z ipythonem)? Czy możesz zaimportować copyreg (jeśli nie, spróbuj po prostu zainstalować ten moduł)? –

+0

Próbowałem uruchomić 'from six import copyreg', ale nie mógł znaleźć modułu –

+0

i czy próbowałeś go zainstalować? Napisałem bardzo wyraźnie: 'spróbuj po prostu zainstalować ten moduł'. –

Odpowiedz

27

Jak skomentował Jonasz, to rozwiązano w ten sposób:

Na MacOSX

przypadku napotkania:

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

Rozwiązanie: TensorFlow zależy Protobuf która wymaga sześć-1.10.0 . Domyślne środowisko Pythona firmy Apple ma sześć wersji 1.4.1 i może być trudne do uaktualnienia. Dlatego zalecamy zainstalowanie osobnej kopii Pythona przez homebrew:

brew install python 

Ale bardzo polecam używanie virtualenv do tego celu.

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

Następnie skonfiguruj nowe środowisko virtualenv. Aby ustawić go w katalogu ~/tensorflow, uruchom:

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

Następnie aktywuj virtualenv:

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

Wewnątrz virtualenv zainstalować TensorFlow:

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

Następnie można uruchomić TensorFlow program taki jak:

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

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

$ # Your prompt should change back 
0

Copyreg można znaleźć w sześciu modułach w Pythonie2.

Krótka odpowiedź, spróbuj aktualizacji/instalacji sześć:

pip install -U six 
+0

Próbowałem to zrobić i zwraca oświadczenie informujące mnie, że sześć jest już w najnowszej wersji. –

0

Może spróbuj ponownie zainstalować sześć. Wygląda na to, że znajduje się w innej lokalizacji niż inne biblioteki. /Library/Python/... vs /usr/local/lib/... To prawdopodobnie oznacza, że ​​sześć zostało zainstalowane przed pythonem homebrew.

0

Inną prostą metodą, którą próbowałem naprawić, jest edycja kodu źródłowego i python_message.py i zmiana linii import six.moves.copyreg as copyreg na from six.moves import copyreg.

Oczywiście konieczna może być zmiana uprawnień tego pliku tylko do odczytu w celu jego modyfikacji.

Powiązane problemy