@DarkwingDuck48
Самостоятельно постигаю программирование на Python

Как скомпилировать несколько Python файлов?

Доброго времени суток!
Пишу сейчас простенькое приложение на PyQt4, состоящее из 3х окон.
Из основного окна, по нажатию соответствующей кнопки вызывается одно из двух других окон. Код каждого окна находится в разных .py файлах.
При создании exe через cx_Freeze показывается только главное окно, нажатие на кнопки вызова других окон не приводят ни к чему. Примеры в сети описывают, как сделать exe из одного файла скрипта, у меня же их 3. Как правильно написать setup.py, чтобы программа работала корректно?
Python: 3.4
PyQt 4.8.3
Win7 32-bit
Если нужно что-то еще выложить - напишите. Очень хочется решить эту проблему.
  • Вопрос задан
  • 3525 просмотров
Решения вопроса 1
@DarkwingDuck48 Автор вопроса
Самостоятельно постигаю программирование на Python
В принципе, разобрался с cx_freeze, как всегда нужно было немного повнимательнее прочитать документацию. Нужно было при написании setup.py добавить вот такую штуку:
executables = [
    Executable('win1.py'),
    Executable('win2.py'),
    Executable('win3.py')
]

и передать ее в функцию setup():
setup(name="name",
      version="0.0.1",
      description="lalala",
      options={"build_exe": build_exe_options},
      executables=executables)

В конечном итоге получается 3 .exe файла, причем из главного окна, как и задумано, осуществляется переход в другие 2. Конечно, есть решение более изящное, но его я пока не нашел.

UPD.
Если не нравится способ с созданием отдельных .ехе файлов, то вот вам альтернатива.
меняем executables с того, что написан вверху на :
executables = [
    Executable('win1.py', includes=['win2.py', 'win3.py'])

Теперь у нас есть один замечательный exe, в котором все работает))))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xSkyFoXx
@xSkyFoXx
Для многооконного, "многофайлового" приложения, я использовал PyInstaller. Внимательно проверьте все пути и пространства имён, доступность библиотек в этих пространствах имён и попробуйте воспользоваться PyInstaller.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы