
Это изображение просто показывает, как структурирован мой код. Я прочитал в Интернете, что если я импортирую из другого модуля, он автоматически добавляет его. Например. если в моем main.py я импортирую настройки, pyinstaller автоматически добавит настройки. Что касается кода сервера, он никуда не импортируется, поэтому я попробовал несколько способов получить его и в exe-файле pyinstaller. Во-первых, я попытался добавить его как данные аналогично тому, как я это сделал с моей папкой с ресурсами (папка с ресурсами работала), например: --add-data "server.py;." . Во-вторых, я попытался использовать подмодули сбора и поместить их в папку, в которой находятся все эти файлы (не уверен, что это предполагалось, но добавил файл init.py). Ни один из них не смог запустить мою exe-программу.
Код: Выделить всё
# Check if running as PyInstaller .exe
if hasattr(sys, '_MEIPASS'):
base_path1 = sys._MEIPASS
else: # Running as a Python script
base_path1 = os.path.dirname(__file__)
server_path = os.path.join(base_path1, "server.py")
print(server_path)
# Ensure the server script exists
if os.path.exists(server_path):
print("path exists")
try:
server_process = subprocess.Popen([sys.executable, server_path])
except Exception as e:
print(f"Error starting server process: {e}")
# Wait for server to fully start or handle with a delay
pygame.time.delay(2000)
pygame 2.6 .1 (SDL 2.28.4, Python 3.12.8)Привет от сообщества pygame. https://www.pygame.org/contribute.htmlRUNNIN AS PYINSTALLERC:\Users\USER\AppData\Local\Temp_MEI224162 # Здесь показан путь к каталогу, который программа начала пытаться получить путь к серверу C:\Users\USER\AppData\Local\Temp_MEI224162 \server.py # путь к фактическому пути к серверу существуетpygame 2.6.1 (SDL 2.28.4, Python 3.12.8) Привет от сообщества pygame. https://www.pygame.org/contribute.htmlRUNNIN AS PYINSTALLERC:\Users\USER\AppData\Local\Temp_MEI224162Программа запущена [WinError 10061] Соединение не может быть установлено, поскольку целевой компьютер активно отказывается от него. Отслеживание (последний последний вызов): Файл «main.py», строка 196, в файле «main.py», строка 118, в mainFile "main.py", строка 110, в player_and_connecionFile "server_connection.py", строка 28, в файле connect_to_server "server_connection.py", строка 25, в Connect_to_server
Это вывод моего терминала, с которым я пытался отладить, я добавил несколько комментариев, чтобы понять, что происходит. Как вы можете видеть, в терминале происходит что-то странное: мой код main.py запускается снова, когда я выбираю опцию хост-сервера (где находится подпроцесс), поэтому возникают повторяющиеся строки, а затем программа выходит из строя, потому что не может подключиться. Кроме того, в моем серверном коде у меня есть отпечаток, в котором говорится, что сервер запущен, но он не отображается в терминале, что означает, что он не открывается. (Имейте в виду, что я добавил if name == main и на сервере)
Моя идея состоит в том, что каким-то образом подпроцесс вместо открытия сервера открывает основной, потому что я открываю окно во второй раз, но я понятия не имею, как это происходит. Любая помощь будет принята с благодарностью!
Подробнее здесь: https://stackoverflow.com/questions/793 ... ot-working
Мобильная версия