How to package tensorflow with pyinstaller on MacOSX?

…衆ロ難τιáo~ 提交于 2020-01-02 07:30:13

问题


I am distributing a python program that contains tensorflow. On OSX, python 2.7, I have no errors loading libraries and running tensorflow. When using pyinstaller to create an executable it fails with a PBR error.

We can reduce this problem down to a simple (hopefully reproducible) error.

Here is our program. Let's just load tensorflow and have it print out some path info.

tf_check.py

import tensorflow
print(tensorflow.__file__)

Run with pyinstaller.

Bens-MacBook-Pro:tests ben$ pyinstaller tf_check.py 
66 INFO: PyInstaller: 3.3
66 INFO: Python: 2.7.10
78 INFO: Platform: Darwin-16.7.0-x86_64-i386-64bit
79 INFO: wrote /Users/ben/Documents/DeepMeerkat/tests/tf_check.spec
87 INFO: UPX is not available.

Builds without a problem. Trying to run the tf_check under dist/tf_check/

yields

Last login: Thu Sep 28 12:54:34 on ttys000
Bens-MacBook-Pro:~ ben$ /Users/ben/Documents/DeepMeerkat/tests/dist/tf_check/tf_check ; exit;
Traceback (most recent call last):
  File "tf_check.py", line 1, in <module>
  File "/Library/Python/2.7/site-packages/PyInstaller-3.3-py2.7.egg/PyInstaller/loader/pyimod03_importers.py", line 396, in load_module
    exec(bytecode, module.__dict__)
  File "tensorflow/__init__.py", line 24, in <module>
  File "/Library/Python/2.7/site-packages/PyInstaller-3.3-py2.7.egg/PyInstaller/loader/pyimod03_importers.py", line 396, in load_module
    exec(bytecode, module.__dict__)
  File "tensorflow/python/__init__.py", line 107, in <module>
  File "/Library/Python/2.7/site-packages/PyInstaller-3.3-py2.7.egg/PyInstaller/loader/pyimod03_importers.py", line 396, in load_module
    exec(bytecode, module.__dict__)
  File "tensorflow/python/platform/test.py", line 60, in <module>
  File "/Library/Python/2.7/site-packages/PyInstaller-3.3-py2.7.egg/PyInstaller/loader/pyimod03_importers.py", line 396, in load_module
    exec(bytecode, module.__dict__)
  File "mock/__init__.py", line 2, in <module>
  File "/Library/Python/2.7/site-packages/PyInstaller-3.3-py2.7.egg/PyInstaller/loader/pyimod03_importers.py", line 396, in load_module
    exec(bytecode, module.__dict__)
  File "mock/mock.py", line 71, in <module>
  File "pbr/version.py", line 461, in semantic_version
  File "pbr/version.py", line 448, in _get_version_from_pkg_resources
  File "pbr/packaging.py", line 755, in get_version
Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository. It's also possible that there is a mismatch between the package name in setup.cfg and the argument given to pbr.version.VersionInfo. Project name mock was given, but was not able to be found.
[1916] Failed to execute script tf_check
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...9 completed.

[Process completed]

Some system information

Python 2.7.10 (default, Feb  7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>> tensorflow.__version__
'1.3.0'

The same code works on Windows without a problem. Again, only when distributing with pyinstaller.

Can anyone show an example of packaging tensorflow on OSX?

EDIT #1

Following Tensorflow CUDA GTX 1070 import error

  • I tried installing in a clean virtual env, just pip install tensorflow and pip install pyinstaller, no improvement.

  • I tried exporting the PBR version before bulding pyinstaller tf_check.py, no improvement.

(env) Bens-MacBook-Pro:tests ben$ echo $PBR_VERSION 3.1.1
(env) Bens-MacBook-Pro:tests ben$ open dist/tf_check/tf_check


回答1:


place at the top of the tensorflow script, before it is imported.

import os

#export pbr version for tensorflow user
os.environ["PBR_VERSION"]='3.1.1'

or whatever version pbr -v gives you



来源:https://stackoverflow.com/questions/46369902/how-to-package-tensorflow-with-pyinstaller-on-macosx

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!