dist .exe does not seem to be self-contained, only runs in original location

63 views
Skip to first unread message

Ken Sullivan

unread,
Aug 14, 2019, 6:08:56 AM8/14/19
to PyInstaller
I'm running into a runtime error when trying to run the pyinstaller generated executable on another machine, or the same machine but dist directory has moved, or even just called from a lower subdirectory, e.g. D:\> base-folder\project\dist\main\main.exe instead of D:\base-folder\project\dist\main> main.exe (though D:\base-folder\project> dist\main\main.exe works). The error trace is:

Traceback (most recent call last):
  File "site-packages\pbr\version.py", line 442, in _get_version_from_pkg_resources
  File "site-packages\pkg_resources\__init__.py", line 352, in get_provider
  File "site-packages\pkg_resources\__init__.py", line 895, in require
  File "site-packages\pkg_resources\__init__.py", line 781, in resolve
pkg_resources.DistributionNotFound: The 'mock' distribution was not found and is required by the application

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "project\main.py", line 23, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "D:\WPy-3670-1.1b\python-3.6.7.amd64\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "NiftyNet\niftynet\__init__.py", line 46, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "D:\WPy-3670-1.1b\python-3.6.7.amd64\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "NiftyNet\niftynet\io\misc_io.py", line 14, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "D:\WPy-3670-1.1b\python-3.6.7.amd64\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\nibabel\__init__.py", line 74, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "D:\WPy-3670-1.1b\python-3.6.7.amd64\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\mock\__init__.py", line 2, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "D:\WPy-3670-1.1b\python-3.6.7.amd64\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\mock\mock.py", line 71, in <module>
  File "site-packages\pbr\version.py", line 462, in semantic_version
  File "site-packages\pbr\version.py", line 449, in _get_version_from_pkg_resources
  File "site-packages\pbr\packaging.py", line 874, 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.


If I run with --debug=imports, the lines immediatly preceding the exception are:
import 'sphinx.setup_command' # <pyimod03_importers.FrozenImporter object at 0x000002749B2CF048>
import 'pbr.builddoc' # <pyimod03_importers.FrozenImporter object at 0x000002749B2CF048>
import 'pbr.packaging' # <pyimod03_importers.FrozenImporter object at 0x000002749B2CF048>

When it works (ran in original location), those lines are followed with:
import 'mock.mock' # <pyimod03_importers.FrozenImporter object at 0x0000023DF208F048>
import 'mock' # <pyimod03_importers.FrozenImporter object at 0x0000023DF208F048>
<many more lines...>

I wasn't able to get it to complete with --debug=all.

pyinstaller is installed and ran within a WinPython command prompt. I had to edit the .spec file to increase the recursionlimit to 5000, and to add some hiddenimports. OS is Windows 10, 64-bit.

Anything I could be doing wrong, or anything to try?


Message has been deleted

Sean Madawala

unread,
Dec 14, 2019, 11:04:32 AM12/14/19
to PyInstaller
To compile use --onefile option.
pyinstaller --onefile <filename>.py

This should work and if you want to suppress the console window compile as follows:
pyinstaller --onefile -w <filename>.py

Hope this helps

Sean Madawala

unread,
Dec 14, 2019, 11:04:54 AM12/14/19
to PyInstaller
Try compiling with the --onefile option
pyinstaller --onefile <filename>.py

Hope this helps
Reply all
Reply to author
Forward
0 new messages