When you try to convert a Python script that loads
icecream into an executable with pyinstaller, it doesn't work.
The error message is as follows:
Traceback (most recent call last): File "run.py", line 1, in <module> from icecream import ic 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 "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module File "icecream\__init__.py", line 20, in <module> FileNotFoundError: [Errno 2] No such file or directory: '***********\\icecream\\__version__.py'
This error is caused by
icecream/__version__.py with the
exec() function, so
__version__.py needs to be included.
The solution is as follows:
.spec file for pyinstaller.
Add the following to the top:
import os import icecream icecream_path = os.path.abspath(icecream.__path__)
Tree() as an argument to the COLLECT() function like this:
coll = COLLECT(exe, a.binaries, Tree(icecream_path, prefix="icecream"), a.zipfiles,