Python. Проблема с компиляцией в .exe
Есть одна проблема — не открывается файл .exe (ну точнее, просто открывается и сразу закрывается) после компиляции из .py, где использовалась библиотека pygame и модуль sys. Ниже — код основного файла игры:
import sys import pygame from pygame.sprite import Group from settings import Settings from cowboy import Cowboy import game_functions as gf def run_game(): # Инициализирует игру и создает объект экрана. pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height) ) pygame.display.set_caption("Cowboy Attack") # Создание ковбоя cowboy = Cowboy(ai_settings, screen) # Создание группы для хранения пуль. bullets = Group() # Назначение цвета фона screen.fill(ai_settings.bg_color) # Запуск основного цикла игры. while True: gf.check_events(ai_settings, screen, cowboy, bullets) cowboy.update() gf.update_screen(ai_settings, screen, cowboy, bullets) gf.update_bullets(bullets) run_game()
Microsoft Windows [Version 10.0.17134.1] (c) Корпорация Майкрософт (Microsoft Corporation), 2018. Все права защищены. C:\Windows\system32>cd C:\Users\sanek\Desktop\Cowboy_Attack C:\Users\sanek\Desktop\Cowboy_Attack>pyinstaller cowboy_attack.py 105 INFO: PyInstaller: 3.5 105 INFO: Python: 3.7.5 105 INFO: Platform: Windows-10-10.0.17134-SP0 107 INFO: wrote C:\Users\sanek\Desktop\Cowboy_Attack\cowboy_attack.spec 109 INFO: UPX is not available. 111 INFO: Extending PYTHONPATH with paths ['C:\\Users\\sanek\\Desktop\\Cowboy_Attack', 'C:\\Users\\sanek\\Desktop\\Cowboy_Attack'] 111 INFO: checking Analysis 112 INFO: Building Analysis because Analysis-00.toc is non existent 112 INFO: Initializing module dependency graph. 116 INFO: Initializing module graph hooks. 119 INFO: Analyzing base_library.zip . 5366 INFO: running Analysis Analysis-00.toc 5370 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable required by c:\users\sanek\appdata\local\programs\python\python37-32\python.exe 6477 INFO: Caching module hooks. 6490 INFO: Analyzing C:\Users\sanek\Desktop\Cowboy_Attack\cowboy_attack.py 7050 INFO: Processing pre-find module path hook distutils 7128 INFO: Processing pre-find module path hook site 7129 INFO: site: retargeting to fake-dir 'c:\\users\\sanek\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\PyInstaller\\fake-modules' 9357 INFO: Loading module hooks. 9357 INFO: Loading module hook "hook-distutils.py". 9360 INFO: Loading module hook "hook-encodings.py". 9496 INFO: Loading module hook "hook-pkg_resources.py". 9966 INFO: Processing pre-safe import module hook win32com Traceback (most recent call last): File "", line 2, in ModuleNotFoundError: No module named 'win32com' 10045 INFO: Processing pre-safe import module hook win32com Traceback (most recent call last): File "", line 2, in ModuleNotFoundError: No module named 'win32com' 10437 INFO: Loading module hook "hook-pydoc.py". 10439 INFO: Loading module hook "hook-pygame.py". 10440 WARNING: Hidden import "pygame._view" not found! 10441 INFO: Loading module hook "hook-sysconfig.py". 10442 INFO: Loading module hook "hook-xml.dom.domreg.py". 10443 INFO: Loading module hook "hook-xml.etree.cElementTree.py". 10444 INFO: Loading module hook "hook-xml.py". 10510 INFO: Looking for ctypes DLLs 10542 INFO: Analyzing run-time hooks . 10550 INFO: Including run-time hook 'pyi_rth_pkgres.py' 10563 INFO: Looking for dynamic libraries 16439 INFO: Looking for eggs 16439 INFO: Using Python library c:\users\sanek\appdata\local\programs\python\python37-32\python37.dll 16440 INFO: Found binding redirects: [] 16450 INFO: Warnings written to C:\Users\sanek\Desktop\Cowboy_Attack\build\cowboy_attack\warn-cowboy_attack.txt 16581 INFO: Graph cross-reference written to C:\Users\sanek\Desktop\Cowboy_Attack\build\cowboy_attack\xref-cowboy_attack.html 16609 INFO: checking PYZ 16610 INFO: Building PYZ because PYZ-00.toc is non existent 16611 INFO: Building PYZ (ZlibArchive) C:\Users\sanek\Desktop\Cowboy_Attack\build\cowboy_attack\PYZ-00.pyz 17881 INFO: Building PYZ (ZlibArchive) C:\Users\sanek\Desktop\Cowboy_Attack\build\cowboy_attack\PYZ-00.pyz completed successfully. 17915 INFO: checking PKG 17915 INFO: Building PKG because PKG-00.toc is non existent 17917 INFO: Building PKG (CArchive) PKG-00.pkg 17954 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully. 17956 INFO: Bootloader c:\users\sanek\appdata\local\programs\python\python37-32\lib\site-packages\PyInstaller\bootloader\Windows-32bit\run.exe 17957 INFO: checking EXE 17957 INFO: Building EXE because EXE-00.toc is non existent 17957 INFO: Building EXE from EXE-00.toc 17958 INFO: Appending archive to EXE C:\Users\sanek\Desktop\Cowboy_Attack\build\cowboy_attack\cowboy_attack.exe 17970 INFO: Building EXE from EXE-00.toc completed successfully. 17976 INFO: checking COLLECT 17976 INFO: Building COLLECT because COLLECT-00.toc is non existent 17977 INFO: Building COLLECT COLLECT-00.toc 18472 INFO: Building COLLECT COLLECT-00.toc completed successfully.
скриншоты директорий после компиляции: _папка dist: _
P.S. Вот ссылки на файлы игры:
- ZIP Архив (удалите .exe)
PyInstaller .exe file does nothing
After 3 days, I can’t get a python program packaged into a .exe file. I’ve tried py2exe (which continuously missed modules), and PyInstaller. Here’s the complicated part. My program uses a lot of additional installed modules (coopr, pyomo, openpyxl, glpk, cbc, pyutilib, numpy, etc.). These in turn import all kinds of other things, and I can’t track it down (the PyInstaller warning log lists 676 lines of missing or potentially unneeded modules.) However, I’ve gotten (by adding imports of «missing» modules to my program) a .exe version which runs from double clicking or from the command line, without printing any error. The problem is, the program does nothing. I have an input file which is included in the build, which my program reads in, does some (intense) calculations, and then creates a .csv output file in the same directory. It works as a .py file. My .exe does nothing. So, if you can tell me what’s wrong go ahead. If not, I’d like to know any helpful steps or ideas to try. At this point, I’ve exhausted the feedback I can find from the program and documentation.
I’m tempted to vote to close this question as too broad as you post no code. However, I too have been bitten by this same problem. I have something that PyInstaller compiled with no warnings that does nothing when I try to run it. I had no idea how to begin to debug the problem. So I guess that’s the essence of your problem. How do you debug a compiled program that appears to do nothing (no error messages and no desired behavior either.)
Не работает exe переведенный из py
Нужно код ниже перевести в exe файл. Использовал pyinstaller, все скомпилировалось, но при запуске exe файла консоль появляется на миллисекунду и сразу исчезает. Текса в ней нет, она пустая.
В коде есть строчки скрывающие консоль, пробовал их комментировать и все перекомпилировать, но проблема осталась. Может можно сделать exe файл по другому?
На самом деле можно и я даже это делал с этим кодом, но я не помню, что именно использовал. Там был сайт с белым фоном, с подробной инструкцией. Также в ней говорилось создать отдельный setup.py. Может кто-нибудь помнит, что за сайт?
У меня даже есть билд той версии, может там можно где-нибудь узнать, с помощью чего он создавался? UPD:
При запуске exe файла через консоль пишет
Traceback (most recent call last): File "main.py", line 5, in ModuleNotFoundError: No module named 'telethon' [16492] Failed to execute script 'main' due to unhandled exception!
import random from time import sleep import win32gui import win32.lib.win32con as win32con from telethon import TelegramClient def file_to_string_array(filename): result = [] with open(filename) as f: for i in f.readlines(): result.append(i.replace('\n', '')) return result def split_input(array): result = [] while True: try: result.append([array[0], array[1], array[2]]) array.pop(0) array.pop(0) array.pop(0) except IndexError: break return result def first_run_to_false(): with open('telegram_input.txt') as f: lines = f.readlines() lines[0] = 'False\n' with open('telegram_input.txt', 'w') as f: f.writelines(lines) async def main(): await client.send_message(chat, text) sleep(2) async for message in client.iter_messages(chat): if 0 < message.button_count < 11: await message.click(random.randint(0, message.button_count - 1)) break if __name__ == '__main__': data = file_to_string_array('telegram_input.txt') first_run = data[0] users = split_input(data[1:]) chat = '@aeawed' text = 'Hello' for user in users: client = TelegramClient(user[2], int(user[0]), user[1]) with client: if first_run == 'False': the_program_to_hide = win32gui.GetForegroundWindow() win32gui.ShowWindow(the_program_to_hide, win32con.SW_HIDE) client.loop.run_until_complete(main()) # if first_run == 'False': # win32gui.ShowWindow(the_program_to_hide, win32con.SW_SHOW) if first_run == 'True': first_run_to_false()
Программа .exe работает некорректно, после pyinstaller. Как найти проблему?
Здравствуйте!
Я написал программу в pyCharm и она отлично работает если её запускать в pyCharm.
Я решил сделать .exe файл при помощи pyinstaller, py2exe, auto_py_to_exe, cx_Freeze, на выходе имею .exe-файл файл который начинает правильно отрабатывать, но в итоге программа заходит в блок except. Также пробовал использовать другие библиотеки для создания .exe, cx_Freeze, auto-py-to-exe
Python 3.6 32-bit
Также у меня создался файл *.pyc, и если его запустить, то отрабатывает всё хорошо.
Основной код больше, скину саму суть:
Подключаемся к ОРС: import OpenOPC opc = OpenOPC.client() servers = opc.servers() print(servers) try: opc.connect(servers[0]) except: print("не удалось подключиться к ОРС - серверу") while: try: #обрабатываем полученнные значения except: print("error read item") opc.close()
Как я понимаю проблема в виртуальной среде, но в cmd.exe я установил все необходимые библиотеки как в проекте pycharm.
Вот так отрабатывает скрипт OpcSender.py из консоли или из pyCharm
Вот так отрабатывает OpcSender.exe
Что посоветуете? заранее спасибо.
Средний 14 комментариев