Я нашел существующие ответы смущающими, и мне потребовалось много времени, чтобы понять, в чем проблема.Вот компиляция всего, что я нашел.
Когда я запускаю свое приложение, я получаю ошибку Failed to execute script foo
(если foo.py
- основной файл).Чтобы устранить эту проблему, не запускайте PyInstaller с --noconsole
(или редактируйте main.spec
, чтобы изменить console=False
=> console=True
).После этого запустите исполняемый файл из командной строки, и вы увидите ошибку.
Первое, что нужно проверить, - это правильно ли упаковывать ваши дополнительные файлы.Вы должны добавить кортежи, например ('x', 'x')
, если хотите, чтобы папка x
была включена.
После сбоя не нажимайте кнопку OK. Если вы работаете в Windows, выможно использовать Search Everything .Найдите один из ваших файлов (например, 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)