Top.Mail.Ru
Ответы

Не могу собрать программу в exe файл написанный на python

Здравствуйте, помогите мне решить мою проблему пожалуйста!
Я создал свою игру из книги, она называется Alien Invasion. Написал я эту игру на языке программирования python. Я работал в программе PyCharm, в этой программе все работало и игра запускалась, а когда хотел создать exe файл, то происходила ошибка. Сначала я использовал Pyinstaller, я писал в терминал:
pip install pyinstaller
cd "Пусть файла" (указал все верно)
pyinstaller alien_invasion.py (с флагом -F тоже пробовал)
но как в видео на ютубе, должна появится папка dist и в ней должен быть мой файл или же папка со всеми файлами для запуска игры.


Также пробовал auto-py-to-exe

pip install auto-py-to-exe

auto-py-to-exe
указал как надо создать файл, с терминалом или без и тд
файл у меня создался в папке вывода, после того как я открыл файл, то у меня вылезла ошибка:

Traceback (most recent call last):
File "alien_invasion.py", line 278, in <module>
File "alien_invasion.py", line 32, in __init__
File "ship.py", line 17, in __init__
FileNotFoundError: No file 'images/ship.bmp' found in working directory 'C:\Users\user\output'.

хотя сама игра в PyCharm и SublimeText3 запускалась без ошибок.


Пожалуйста помогите мне, скажите способы как создать exe файл без Pyinstaller и auto-py-to-exe, или же как решить данную ошибку.

ЗАРАНЕЕ СПАСИБО!!!

По дате
По рейтингу
Аватар пользователя
Мастер

Привет! Ваша ошибка связана с тем, что при создании exe-файла Pyinstaller не добавил к нему папку с изображениями для игры. Это произошло потому, что Pyinstaller не учитывает все зависимости и файлы, используемые в вашей программе, если они находятся в других папках.

Есть несколько вариантов решения этой проблемы. Вот некоторые из них:

Указать пути к файлам и папкам явно. Для этого вам нужно изменить код, чтобы он искал файлы в определенном месте. Например, если вы знаете, что изображения находятся в папке "images" в той же папке, что и ваш скрипт, то вы можете использовать относительный путь к этой папке:

import os

base_path = os.path.abspath(os.path.dirname(__file__))
image_path = os.path.join(base_path, 'images')

Затем вы можете использовать переменную image_path вместо жестко закодированных путей к файлам.

Включить все файлы и папки в exe-файл. Для этого вам нужно добавить опции Pyinstaller, чтобы он включил все файлы и папки, используемые вашей программой. Например, вы можете использовать следующие опции:

pyinstaller --onefile --add-data "images;images" alien_invasion.py

Это добавит папку "images" в корень вашего exe-файла.

Использовать другой инструмент для создания exe-файлов. Существуют и другие инструменты, которые могут помочь вам создать exe-файл из вашего скрипта на Python. Например, cx_Freeze, py2exe, PyOxidizer и другие. Каждый из них имеет свои особенности и преимущества, поэтому вам придется выбрать тот, который наиболее подходит для вашего случая.
Надеюсь, что это поможет вам решить вашу проблему!

Аватар пользователя
Ученик

FileNotFoundError: No file 'images/ship.bmp' found in working directory 'C:\Users\user\output'. Банально не может найти файл который ты использовал.
File "alien_invasion.py", line 278, in <module>
File "alien_invasion.py", line 32, in __init__
File "ship.py", line 17, in __init__ в этих строчках
Если ты указывал именно путь где лежит фотка то в этом и косяк