Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2021, 09:17   #1
qimer
Новичок
Джуниор
 
Регистрация: 12.01.2021
Сообщений: 1
По умолчанию Программа не работает после компиляции

Всем привет. Написал маленькую программу для сбора информации о комплектующих ПК (мне это нужно по работе). Посредством самого python'а программа работает без каких-либо проблем, но если ее скомпилировать через "pyinstaller -F prog1.py", то получившийся exe-шник уже не запускается. Или запускается, но быстро закрывается. Программа использует модуль WMI, думаю проблема с ним, т.к. любые другие программы отлично работают.

Вот код программы:

Код:
import wmi

c = wmi.WMI()

MemoryType = {
    '26': 'DDR4',
    '21': 'DDR2',
    '24': 'DDR3',
}

text = ''


for i in c.CIM_Processor():
    text = text + i.Name.rstrip() + ', ' + str(i.MaxClockSpeed) + 'MHz' + '\n'
for i in c.Win32_BaseBoard():
    text = text + i.Product + '\n'
for i in c.Win32_PhysicalMemory():
    text = text +str(int(i.Capacity)/1073741824) + 'Gb, ' + MemoryType[str(i.SMBIOSMemoryType)] + '\n'
for i in c.Win32_PhysicalMemoryArray():
    text = text + 'всего слотов: ' + str(i.MemoryDevices) + '\n'
for i in c.Win32_DesktopMonitor():
    print(i)

print(text)
a = input()

Последний раз редактировалось qimer; 12.01.2021 в 09:19.
qimer вне форума Ответить с цитированием
Старый 20.01.2021, 12:47   #2
VeryStupidPerson
Пользователь
 
Аватар для VeryStupidPerson
 
Регистрация: 20.07.2020
Сообщений: 69
По умолчанию

Во-первых, это не компиляция, просто архивирование. Вы можете разархивировать этот экзешник и увидите там Вашу программу, все библиотеки, интерпретатор питона + некоторая обвязка. Скорость выполнения программы от такой "компиляции" не поменяется или уменьшится. Также, файлы, так "скомпилированные", обычно нормально выполняются только в той же системе, где и проводилась "компиляция".

А вообще, у Вас вообще не должен был получиться экзешник. https://codecamp.ru/blog/python-pyin...g-python-code/.
Правильная команда выглядит немного наоборот: pyinstaller prog1.py -F. Вначале идёт название программы, затем указание, как собирать программу.
---------------------------------------------------
Нич-чего не понимаю!
Или что-то случилось, или… одно из двух!
VeryStupidPerson вне форума Ответить с цитированием
Старый 23.01.2021, 06:50   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

qimer, в чем заключается проблема у вас не подскажу. У меня ваша программа отработала и в виде скрипта, и в виде exe-файла. Вы точно берете exe из папки dist?

VeryStupidPerson, соглашусь с тем, что это не компиляция. Но: внутри будет не исходный скрипт с программой, а уже скомпилированный ".pyc"; эта операция не для ускорения, а чтобы на пользовательских ПК не ставить интерпретатор; очень часто параметры запуска можно писать практически в произвольном порядке (using-pyinstaller).
Цитата:
pyinstaller [options] script [script …] | specfile
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 23.01.2021, 12:42   #4
VeryStupidPerson
Пользователь
 
Аватар для VeryStupidPerson
 
Регистрация: 20.07.2020
Сообщений: 69
По умолчанию

Pyc файлы также исполняет интерпретатор. И py переводится в pyc для ускорения запуска. Если Вы создадите проект, например, в среде spyder, то у Вас автоматически создастся папка с копиями всех программ, кроме основной, но с расширением pyc. И при следующем запуске интерпретатор будет импортировать pyc файлы вместо py.
Интерпретатор исполняет именно pyc файлы, поэтому при запуске тратится довольно много времени (для больших проектов) на то, чтоб он перевёл код в понятный для себя и только для себя.
Pyc файлы и хранят этот, уже переведённый, код. На скорость выполнения не влияет, но на скорость загрузки - довольно ощутимо.
И это и есть плюс питона - код будет работать, при наличие интерпретатора, в любой системе (в идеальном случае, понятно, есть глюки с библиотеками), достаточно просто перенести программу с одного устройства на другое.
---------------------------------------------------
Нич-чего не понимаю!
Или что-то случилось, или… одно из двух!
VeryStupidPerson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Очередь] Помогите найти ошибку...программа после компиляции и ввода значения не выдает ответ Калючка Паскаль, Turbo Pascal, PascalABC.NET 8 07.11.2016 16:57
после перезагрузки программа не работает zekk3r Общие вопросы Delphi 8 28.02.2013 07:19
При компиляции программы на си не выдаёт ошибок и предупреждений,но тем не менее программа не работает. AmoSirin Общие вопросы C/C++ 7 12.10.2010 00:11
после автозагрузки программа не работает Kos123 Свободное общение 3 29.09.2009 13:52
delphi7 программа после компиляции сразу закрывается fredd Помощь студентам 1 30.10.2008 14:25