Я знаю, что этому больше месяца, но я столкнулся с этим, а также, похоже, не хотел работать каким-либо из предложенных способов.
Видя, как другие люди могут застрять в этомв будущем, вот как я использовал исправление для этого.
Как только вы впервые создаете исполняемый файл с помощью PyInstaller, создается файл спецификации.
Этот файл выглядит примерно так (для --onefile):
a = Analysis(['main_file.py'],
pathex=['/root/folder'],
binaries=[],
datas=[],
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='app_name',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
Я просто скопировал PIL в файл, используя datas
следующим образом:
datas=[('/usr/local/lib/python3.7/dist-packages/PIL/','PIL'),],
Теперь все работает как надо, пока я не найду лучшее решениекогда у меня будет время.
Имейте в виду, что файл спецификации будет перезаписан, если PyInstaller будет использоваться на main_file.py
(в данном случае).Вместо этого следует использовать pyinstaller main_file.spec
.