Я использую pyinstaller, чтобы попытаться создать исполняемый файл. Структура моего проекта такова, что у меня около 5-6 пакетов, которые включены в основной проект, и основной проект был написан с файлом __main__.py
, поэтому его можно было назвать модулем с python -m module
. Чтобы это работало с pyinstaller, я написал очень маленькую оболочку, помещенную в каталог над модулем, а именно:
import runpy
def main():
module_name = 'myModule'
runpy.run_module(module_name, run_name='__main__')
if __name__=="__main__":
main()
Я также разрабатываю в среде anaconda, и каждый пакет компилируется в модуль, который затем включается в среду и включается в основной проект. Когда я запускаю эту оболочку в Anaconda, приложение открывается. Когда я создаю исполняемый pyinstaller, он говорит мне «нет модуля с именем myModule».
Моя структура проекта выглядит следующим образом:
|containing folder/
|
|-- package1/
|-- package2/
| ...
|-- package6/
|
|-- main_application/
| |-- src/
| | |-- /myModule <--- main project module src here
| | | |-- __main__.py
| | | |
| | |-- run.py <--- wrapper file that runs everything