question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Executable python application may fail depending on temp folder

See original GitHub issue

Hi

I’ve analyzed a strange issue with python based windows executable built with pyinstaller. The executable could be built without an issue, but when the tool was started the following error occurs:

File "site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py", line 13, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "c:\hostedtoolcache\windows\python\3.7.6\x64\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 489, in exec_module
File "site-packages\pkg_resources\__init__.py", line 3251, in <module>
File "site-packages\pkg_resources\__init__.py", line 3235, in _call_aside
File "site-packages\pkg_resources\__init__.py", line 3264, in _initialize_master_working_set
File "site-packages\pkg_resources\__init__.py", line 574, in _build_master
File "site-packages\pkg_resources\__init__.py", line 567, in __init__
File "site-packages\pkg_resources\__init__.py", line 623, in add_entry
File "site-packages\pkg_resources\__init__.py", line 1983, in find_eggs_in_zip
File "site-packages\pkg_resources\__init__.py", line 1414, in has_metadata
File "site-packages\pkg_resources\__init__.py", line 1853, in _has
File "site-packages\pkg_resources\__init__.py", line 1716, in _zipinfo_name
AssertionError: C:\Users\A9447~1.EGG\EGG-INFO\PKG-INFO is not a subpath of C:\Users\A9447~1.EGG\AppData\Local\Temp\_MEI120962\base_library.zip\
[10872] Failed to execute script pyi_rth_pkgres

After a while I’ve found out that the same executable works properly on other workstations or even with other user accounts. I guess I’ve found the root cause for my problem in the file “pkg_ressources.py” of the setuptools. In the function “_setup_prefix” is a test if a path ends with “.egg”, what is the case in my situation for my temporairy folder (=> “C:\Users\A9447~1.EGG”). This causes that a new invalid path was built and afterwards caused the assertion. “C:\Users\A9447~1.EGG” is the default temp folder for my user “a.eggenberger”.

The quick solution was to set another user temp folder “C\:Temp”. This solved the behavior and it works as expected.

To avoid that other users with a lastname starting with “egg” the code in the _setup_prefix function should be improved.

Regards Adrian

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:9 (4 by maintainers)

github_iconTop GitHub Comments

4reactions
jaracocommented, May 28, 2020

This might be a contender for one of the most obscure bugs I’ve seen. Not only does it depend on the fact that your last name begins with “egg” but it also depends on the fact that the egg-prefixed name appears in the last segment of the pathname, and it depends on the fact that you’re on Windows, which provides compatibility with the decades-old 8.3 convention. I suspect there’s another factor at play too that’s causing the 8.3 filename to be used instead of the proper full filename.

0reactions
burnpanckcommented, Jul 13, 2022

Ah, there we go. In CI, our version of python was pinned at chocolatey’s 3.9.2, which was shipping 49.1.0. Thanks for the pointer!

Read more comments on GitHub >

github_iconTop Results From Across the Web

Determining application path in a Python EXE generated by ...
I found a solution. You need to check if the application is running as a script or as a frozen exe: import os...
Read more >
tempfile — Generate temporary files and directories — Python ...
This module creates temporary files and directories. It works on all supported platforms. TemporaryFile , NamedTemporaryFile , TemporaryDirectory , and ...
Read more >
Issues When Using auto-py-to-exe - Nitratine
'python'/'pip'/'auto-py-to-exe' is not recognised as an internal or external command, operable program or batch file. This occurs because the ...
Read more >
Unpacking Python Executables on Windows and Linux - Fortinet
To turn this python program into a packaged EXE file we can use PyInstaller ... PyInstaller first unpacks all files in the temporary...
Read more >
Packaging PyQt5 applications for Windows, with PyInstaller ...
Common-Controls to dependent assemblies of final executable required by c:\users\gebruiker\appdata\local\programs\python\python37\python.exe ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found