Построить.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
Другие вопросы по тегам