Как преобразовать скрипт на Python, для которого требуются импортированные модули, в исполняемый файл в Windows

#windows-7 #exe #python-3.5 #pyinstaller #spyder

#windows-7 #exe #python-3.5 #pyinstaller #spyder

Вопрос:

Я пытаюсь написать программу в Windows 7 Professional, которая будет делать прогнозы на основе пользовательских данных. Эта программа предназначена для использования другими пользователями, у которых на компьютерах не установлен Python.

Для того, чтобы сделать это, я написал графический скрипт в Spyder, используя Python 3.5.6. Я могу нормально выполнить код, и графический интерфейс работает отлично, однако, когда я пытаюсь преобразовать его в исполняемый файл, который другие люди могут использовать с помощью pyinstaller, он зависает.

Я совершенно уверен, что это связано с импортом внешних модулей, таких как numpy и keras в скрипт.

Если я исключу модули, исполняемый файл будет создан, однако он не будет работать, поскольку в нем нет необходимых модулей для функционирования.

Ниже я привел очень простой пример скрипта, поскольку я не могу воспроизвести здесь свой реальный код из-за того, что он является проприетарным.

Я написал отдельный скрипт, в который импортирую все необходимые модули, думая, что это может помочь, но это не помогло. Список модулей приведен ниже, исключая пользовательские скрипты.

numpy pandas sklearn keras tkinter

простой пример

Следующее setup.py файл и команда работают, создавая простой exe-файл, который может запускаться пользователями без необходимости установки python:

 # setup.py:
input('Press ENTER to begin.')
num1 = float(input('Number 1  '))
num2 = float(input('Number 2  '))

print([num1,num2])
input('Press ENTER to exit.')

# Command in IPython Console of Spyder
!pyinstaller setup.py --onefile
  

Следующее setup.py файл и команда не работают, вместо этого он зависает, и сообщение об ошибке не получено:

 # setup.py:
import numpy as np
input('Press ENTER to begin.')
num1 = float(input('Number 1  '))
num2 = float(input('Number 2  '))

print(np.array([num1,num2]))
input('Press ENTER to exit.')

# Command in IPython Console of Spyder
!pyinstaller setup.py --onefile
  

Следующее setup.py файл и команда действительно создают exe-файл, однако он закрывается, как только открывается, потому что для правильной работы требуется numpy:

 # setup.py:
import numpy as np
input('Press ENTER to begin.')
num1 = float(input('Number 1  '))
num2 = float(input('Number 2  '))

print(np.array([num1,num2]))
input('Press ENTER to exit.')

# Command in IPython Console of Spyder
!pyinstaller setup.py --onefile --exclude-module numpy
  

Я действительно в растерянности и не уверен, что делать. Я просмотрел документацию и предыдущие вопросы и не нашел ничего полезного, и предложения не устранили проблему, какой бы она ни была.

Ответ №1:

Используйте Cx_freeze() module для преобразования вашего файла Python в exe.