Sep-04-2019, 12:20 PM
You can work with importlib.ressources, which is not so painful.
Running the creation of exe-file:
Result:
C:\Users\Admin\Desktop\example_with_ressources λ tree /F Auflistung der Ordnerpfade Volumeseriennummer : 6CC1-07AC C:. │ test.py │ test.spec │ └───data test1.txt test2.txt test3.txt __init__.pytest.py
from importlib import resources import data # <- import of package with data files with resources.path(data, 'test1.txt') as p: print(p, type(p)) # <- pathlib object print(p.read_text()) print(resources.read_text(data, 'test2.txt')) print(resources.read_text(data, 'test3.txt'))test.spec
# -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis(['test.py'], pathex=['.'], binaries=[], datas=[ ('data/test1.txt', 'data'), ('data/test2.txt', 'data'), ('data/test3.txt', 'data'), ], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='test', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True )The variable datas must be edited to copy non-python files into the executable file.
Running the creation of exe-file:
Result:
Output:C:\Users\Admin\Desktop\example_with_ressources
λ dist\test.exe
C:\Users\Admin\AppData\Local\Temp\_MEI110682\data\test1.txt <class 'pathlib.WindowsPath'>
test
x
Hi
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
All humans together. We don't need politicians!