Pyinstaller模块问题



我有一个python文件,我正试图在Mac上使用Pyinstaller创建一个可执行文件。这个python文件导入几个不同的python文件。当我运行生成的unix可执行文件时,我会得到以下错误:

File "main/__init__.py", line 4, in <module>
ModuleNotFoundError: No module named 'game'

第4行显示:

from game.scripts.gui import creator

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

pyinstaller __init__.py --onefile --clean --windowed

目录:

__init__.py
game
scripts
gui
creator.py

关于我该怎么解决这个问题,有什么想法吗?感谢

创建*.exe不会包含子目录,因此在*.exe中找不到creator.py。为了避免这种情况,您必须通过指定它们来包含额外的文件/文件夹。这可以通过*.spec文件来完成

通过使用*.py文件调用pyinstaller,它将创建一个默认的*.spec文件,您可以编辑该文件,并在下次创建*.exe时使用。调用时使用的每个选项

pyinstaller __init__.py --onefile --clean --windowed

此处配置,因此调用

pyinstaller *.spec

下一次给出相同的结果。

通过将单个文件甚至整个文件夹(包括其内容(复制到*.exe:中,在您的规范文件中编辑此文件以满足您的需求

a = Analysis(['your.py'],
pathex=['.'],
binaries=[],
datas=[('some.dll', '.'),
('configurationfile.ini', '.'),
('data.xlsx', '.'),
('../../anotherfile.pdf', '.')
],
....some lines cut ....
a.datas += Tree('./thisfoldershouldbecopied', prefix='foldernameinexe')

在pyinstaller的文档中可以找到更多关于规范文件和包括数据文件的信息https://pyinstaller.readthedocs.io/en/stable/spec-files.html

例如,在本文中:Pyinstaller添加数据文件

最新更新