python - No se puede instalar Tensorflow Mac
macos pip (1)
Actualización: la versión 1.13 introduce el soporte de Python 3.7
La reciente versión candidata para la versión 1.13 ofrece compatibilidad con Python 3.7, en particular, las ruedas de CPU precompiladas también están disponibles para MacOS 10.11 y posteriores ( enlace a 1.13.1 ). Instalar como de costumbre:
$ pip install tensorflow>=1.13
Respuesta original (desactualizada)
tensorflow
no es compatible con Python 3.7 en este momento.
La razón de esto es que:
-
tensorflow
usaasync
como nombre de parámetro de función, yasync
yawait
convirtieron en palabras clave reservadas en Python 3.7 (como lo señala @phd en este comentario ): esta es la razón por la que está obteniendo el error de importación; -
Python 3.7 cambió el tipo de
PyUnicode_AsUTF8AndSize
funciónPyUnicode_AsUTF8AndSize
en la API de C utilizada portensorflow
:Modificado en la versión 3.7: El tipo de retorno ahora es
const char *
lugar dechar *
.
Esto significa que ambos problemas deben solucionarse antes de que se pueda crear y lanzar
tensorflow
para Python 3.7 y Linux / MacOS.
Puede seguir el estado actual aquí:
problema # 20517
.
Por lo tanto, la solución sería evitar Python 3.7 si necesita continuar trabajando con
tensorflow
.
Quédate con Python 3.6 por el momento.
Si está dispuesto a generar
tensorflow
desde la fuente:
hay un parche propuesto para solucionar ambos problemas
.
Si quieres probarlo, sigue el tutorial de instalación
de TensorFlow from Sources
de los documentos oficiales, la única diferencia está en el principio:
-
Clonar el repositorio
$ git clone https://github.com/tensorflow/tensorflow
-
Copie el contenido del parche en un archivo, por ejemplo,
tf.patch
-
Aplique el parche:
$ git apply tf.patch
-
Continúa con el resto del tutorial.
También tenga en cuenta que tendrá que compilar el último
protobuf
, ya que el soporte para Python 3.7 se agregó recientemente, pero no está incluido en ninguna versión publicada.
Edite
tensorflow/contrib/cmake/external/protobuf.cmake
para apuntar a la
HEAD
actual del repositorio de
protobuf
.
Revisé mi versión de pip3 y python3:
(tensorflow) MacBook-Pro-de-Hector-2:tensorflow hectoresteban$ pip3 -V
pip 10.0.1 from /Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip (python 3.7)
(tensorflow) MacBook-Pro-de-Hector-2:tensorflow hectoresteban$ python3 -V
Python 3.7.0
En el entorno virtual que estoy usando actualmente lo hice:
pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.9.0-py3-none-any.whl
Como la forma estándar en que
pip3 install tensorflow
sale el siguiente mensaje:
could not find a version that satisfies the requirement tensorflow (from versions: )
Después de instalado usando el primer método explicado:
(tensorflow) MacBook-Pro-de-Hector-2:tensorflow hectoresteban$ python3
>>> import tensorflow
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/tensorflow/__init__.py", line 22, in <module>
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "/Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/Users/hectoresteban/.virtualenvs/tensorflow/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 114
def TFE_ContextOptionsSetAsync(arg1, async):
^
SyntaxError: invalid syntax
¿Cual es el problema? Puedo descargar otros paquetes como numpy pero no Tensorflow. (MacOS 10.13.4)