我有一个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添加数据文件