Я обнаружил, что существующие ответы сбивают с толку, и потребовалось много времени, чтобы решить, где проблема. Вот компиляция всего, что я нашел.
Когда я запускаю свое приложение, я получаю сообщение об ошибке Failed to execute script foo
(если foo.py
является основным файлом). Чтобы устранить эту проблему, не запускайте PyInstaller с помощью --noconsole
(или отредактируйте main.spec
, чтобы изменить console=False
=> console=True
). При этом запустите исполняемый файл из командной строки, и вы увидите сбой.
Первое, что нужно проверить, это то, что он правильно упаковывает ваши лишние файлы. Вы должны добавить кортежи, такие как ('x', 'x')
, если вы хотите включить папку x
.
После сбоя не нажимайте OK. Если вы находитесь в Windows, вы можете использовать Искать все . Найдите один из ваших файлов (например, sword.png
). Вы должны найти временный путь, где он распаковал файлы (например, C:\Users\ashes999\AppData\Local\Temp\_MEI157682\images\sword.png
). Вы можете просмотреть этот каталог и убедиться, что он включает все. Если вы не можете найти его таким образом, найдите что-то вроде main.exe.manifest
(Windows) или python35.dll
(если вы используете Python 3.5).
Если программа установки включает все, следующая вероятная Проблема - это ввод-вывод файлов: ваш код Python ищет в каталоге исполняемого файла вместо каталога temp для файлов.
Чтобы исправить это, любой из ответов на этот вопрос работает. Лично я нашел смесь из них всех, чтобы работать: сначала замените каталог в главном файле точки входа, а все остальное работает как есть:
if hasattr(sys, '_MEIPASS'):
os.chdir(sys._MEIPASS)