Python 在PyInstaller中使用带.spec的--onefile
我正在使用PyInstaller和.spec文件“编译”一个程序。我正在使用.spec文件,因为我需要在程序中包含一个额外的文件。当我尝试执行Python 在PyInstaller中使用带.spec的--onefile,python,pyinstaller,Python,Pyinstaller,我正在使用PyInstaller和.spec文件“编译”一个程序。我正在使用.spec文件,因为我需要在程序中包含一个额外的文件。当我尝试执行PyInstaller--onefile Prog.spec时,它仍然会在dist中创建一个文件夹,将所有文件分开,而不是像我预期的那样创建一个文件。如果我使用PyInstaller--onefile Prog.py,那么它会在dist中生成一个.exe文件,这就是我想要的。使用.spec文件时,我需要做什么特殊的事情吗?您可以在命令行中添加额外的文件,而
PyInstaller--onefile Prog.spec
时,它仍然会在dist
中创建一个文件夹,将所有文件分开,而不是像我预期的那样创建一个文件。如果我使用PyInstaller--onefile Prog.py
,那么它会在dist
中生成一个.exe文件,这就是我想要的。使用.spec文件时,我需要做什么特殊的事情吗?您可以在命令行中添加额外的文件,而不是编辑spec文件:
pyinstaller --onefile --add-data <SRC;DEST or SRC:DEST> yourfile.py
pyinstaller--onefile--添加数据yourfile.py
否则,请确保规范文件中没有收集步骤:
在单文件模式下,没有收集调用,EXE实例接收所有脚本、模块和二进制文件
有关命令行标志的详细信息
如果问题仍然存在,这也可以提供一些见解:使用pyi makespec--onefile yourprogram.py
为onefile模式生成一个样例spec文件
没有对方付费呼叫,EXE呼叫不同。例如:
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='main',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
要修改.spec文件,请将
binarie=[]
更改为binaries=None
a = Analysis(
...
binaries=None,
...
)
我知道这似乎是胡说八道,但它奏效了
版本4.3