PyInstaller和本地程序包出现问题



我的项目结构如下:

  • example3/
    • window/
      • __init__.py
    • __init__.py
    • __main__.py
  • setup.py
  • example.py

在主文件中:

import sys
from PySide2.QtWidgets import QApplication
import window
def main():
app = QApplication(sys.argv)
main_window = window.Main()
main_window.show()
app.exec_()
if __name__ == '__main__':
main()

PyInstaller:的构建脚本example.py

from example3.__main__ import main
if __name__ == '__main__':
main()

如何让PyInstaller识别我的项目包或其中的模块?PyInstaller只能看到使用pip安装的软件包。我读过一些关于钩子文件的东西,但并不真正理解如何做到这一点。

我用命令创建了可执行文件:

> pyinstaller example.py --onefile

当我尝试运行应用程序时,我收到错误消息:

> ./dist/example
Traceback (most recent call last):
File "example.py", line 3, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
File "example3/__main__.py", line 7, in <module>
File "/tmp/embedded.xpuoquuw.zip/shibokensupport/__feature__.py", line 146, in _import
ModuleNotFoundError: No module named 'window'
[127129] Failed to execute script 'example' due to unhandled exception!

这个问题可以通过告诉PyInstaller我的项目模块和包的搜索路径来解决:

pyinstaller --onefile example.py --paths ./example3/