Построить.exe для Windows из скрипта Python 3
Я хотел бы создать исполняемый файл для скрипта Python 3, который:
- импортирует pyqtgraph (с pyqt5)
- импортирует theano и pymc3
- также импортирует numpy, scipy, sys, os
- открывает простой графический интерфейс, созданный с помощью qt designer и сохраненный в файле '.ui'
- будет распространяться на компьютерах с Windows 7+
Я пробовал несколько инструментов (py2exe, pyinstaller, pynsist, cx_Freeze) в течение нескольких часов, но каждый раз терпел неудачу. мой "менее худший" результат был с pyinstaller (см. ниже) без theano части (и так без части сценария). Может кто-нибудь мне помочь?
У меня есть 3 файла: 2 файла ".py" (1 с основным и другой с кучей определений) и ".ui", описывающий GUI. Скрипт выполняет некоторые статистические анализы, затем строит некоторые кривые.
Вот пример моего сбоя с python 3.5 и cx_Freeze (который я считаю самой продвинутой попыткой, которую я пробовал, но я не ограничен этими инструментами в частности): я поместил свои 3 файла в каталог на машине с Windows, где все было мучительно установлено (с анакондой). Я добавляю файл "setup.py", который для cx_Freeze:
from cx_Freeze import setup, Executable
import os
os.environ['TCL_LIBRARY'] = r'C:\Program Files\Python 3.5\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Program Files\Python 3.5\tcl\tk8.6'
os.environ['PYQTGRAPH_QT_LIB'] = 'PyQt5'
setup(
name = ‘concentrationprofiles',
version = '0.1',
description = 'simple tool to simulate concentration profiles. preliminary',
author = 'SPH',
options = dict(
build_exe = dict(
packages = ['os','sys','numpy','theano','pymc3','pyqtgraph'],#omitting ‘scipy’ ! for some reason when I put ’scipy’ in this list the building fails, but it works without… probably the ‘import scipy’ inside the code is properly interpreted
includes = ['numpy.core._methods','numpy.lib.format',
'pyqtgraph.debug','pyqtgraph.functions',
'pyqtgraph.ThreadsafeTimer','cp_util_jul17'],
include_files = ['GUI_cprofiles_jul17.ui']
)),
executables = [Executable(
script='cprofiles_jul17.py',
base='Win32GUI',
targetName=‘concentprofiles.exe'
)]
)
Затем я выполняю командную строку 'python setup.py build' в приглашении anaconda (эквивалентно командной строке, насколько мне известно) в каталоге с 4 файлами. После многих эпизодов и часов борьбы здание выглядит нормально (100-секундные строки без сообщений об ошибках и продолжается до конца), оно создает каталог 'build' с подкаталогом 'exe.win-amd64-3.5', содержащим все необходимое +.exe. Но когда я пытаюсь запустить этот.exe, я ничего не получаю: ни сообщения об ошибке, ни открытия консоли или окна, ни быстрого открытия-закрытия, и я не могу найти журнал... просто ничего
Я попытался изменить опцию "base" с "Win32GUI" на base= "Console" и base=None. В этих случаях я предполагаю, что есть быстрое открытие-закрытие консоли, которое я не могу прочитать, так как я не нахожу журнал.
Вот несколько других плохих результатов во время других попыток:
py2exe: оказывается несовместимым с моим обычным python 3.6, поэтому я понизил до 3.5. Но даже в 3.5 после нескольких строк он замерз: опять нет сообщений об ошибках, нет открытий консоли или окна, нет быстрого открытия-закрытия, и я не могу найти журнал... просто ничего. даже не каталог 'build'. В другой раз я также попробовал альтернативу с python 3.4, но получил ошибку, касающуюся отсутствующего файла msvcr100.dll, который я пытался установить, следуя инструкциям на форумах. Когда я в конечном итоге получил разрешение на изменение системных каталогов, инструкция "regsvr32" завершилась неудачно (разве это не для 32-битных файлов? Но нет "regsvr64"…). В конце концов я сдался
pyinstaller: смотреть обновления
pynsist: принцип pynsist заключается в том, что вы получаете не исполняемый файл, а только установщик. Почему бы и нет? Мне не нужен.exe, если я могу распространять код. К сожалению, после сборки установщика (без ошибок) и его установки (опять же без видимой ошибки) программа ничего не дает, как в случае cx_Freeze.
Я могу добавить ссылку на файлы скриптов, если вы хотите / нужно.
обновление август, 18, 2017, 9:20
Следуя этому предложению, я открыл новый пост, касающийся pyinstaller: создать.exe для Windows из скрипта python 3, импортирующего theano с помощью pyinstaller.
Я приглашаю вас ответить на вопросы, касающиеся pyinstaller. Этот вопрос будет помечен как ответивший, если моя проблема будет решена с помощью py2exe или cx_freeze.
Обновление 2 сентября, 2 часа дня:
В конце концов мне удалось собрать.exe с pyinstaller после многих эпизодов.
К сожалению, мне не удалось разобраться с модулем 'theano' (который требуется в моем случае модулем 'pymc3'), и мне пришлось изменить файлы.py и отказаться от части приложения. Может ли кто-нибудь помочь мне создать.exe для Windows 7+ с модулем "theano"?
0 ответов
Чтобы создать исполняемый файл вашей программы Python, выполните следующую команду в CMD. Сначала вам нужно установить pyinstaller с помощью следующей команды:
pip install pyinstaller
Затем сделайте следующее, чтобы создать один исполняемый файл вашей программы Python, сначала перейдите по пути к вашей программе (с cd
), где находится ваш файл Python (.py), а затем:
pyinstaller -w -F YourPyFile