在 Heroku 上使用 python 导入错误 运行 张量流?

ImportError running tensorflow with python on Heroku?

我试图在我的 Heroku 实例中导入 tensorflow,但我不断收到以下错误:

File "/app/tools/inception/classify_image.py", line 45, in <module>
2016-06-23T19:08:18.090957+00:00 app[clock.1]:     import tensorflow as tf
2016-06-23T19:08:18.090979+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/tensorflow/__init__.py", line 23, in <module>
2016-06-23T19:08:18.091005+00:00 app[clock.1]:     from tensorflow.python import *
2016-06-23T19:08:18.091011+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 45, in <module>
2016-06-23T19:08:18.091050+00:00 app[clock.1]:     from tensorflow.python import pywrap_tensorflow
2016-06-23T19:08:18.091068+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
2016-06-23T19:08:18.091112+00:00 app[clock.1]:     _pywrap_tensorflow = swig_import_helper()
2016-06-23T19:08:18.091116+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
2016-06-23T19:08:18.091136+00:00 app[clock.1]:     _mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
2016-06-23T19:08:18.091166+00:00 app[clock.1]: ImportError: /app/.heroku/python/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so: invalid ELF header

有人知道这是为什么吗?我的 requirements.txt 中有以下行:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl

我不确定无效的 ELF header 是什么意思。我是否遗漏了依赖关系或其他什么?

ImportError: /app/.heroku/python/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so: invalid ELF header

最可能的原因是您试图将 x86_64 TF 共享库加载到 i386 Python 可执行文件中。

您可以通过运行

验证
file -L /app/.heroku/python/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so

(应该产生 ELF 64-bit LSB shared object, x86-64, version 1 (SYSV) ...)和

file -L /app/.heroku/python/bin/python2.7

(应该说 ELF 64-bit LSB executable, x86-64, version 1 (SYSV), ...,但可能会说 ELF 32-bit LSB executable ...)。

更新:

_pywrap_tenso‌​rflow.so: Mach-O 64-bit x86_64 dynamically linked shared library

这是您尝试加载到 Linux Python 中的 MacOS 版本。您需要 Linux 版本的 tensorflow。