我正在使用.spec文件使用PyInstaller“编译”程序。我正在使用.spec文件,因为我需要在程序中包含一个额外的文件。当我尝试deleteButton.setOnAction(e -> {
String s = "DELETE: ";
s += receipt.getSelectedText();
receipt.replaceSelection(s);
});
时,它仍会在PyInstaller --onefile Prog.spec
中创建一个文件夹,其中所有文件都是分开的,而不是像我期望的那样制作单个文件。如果我dist
那么它会在PyInstaller --onefile Prog.py
中生成一个.exe文件,这就是我想要的。使用.spec文件时,我需要做些什么吗?
答案 0 :(得分:11)
使用pyi-makespec --onefile yourprogram.py
为onefile模式生成样本规范文件。
https://pythonhosted.org/PyInstaller/man/pyi-makespec.html
没有COLLECT呼叫,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 )
答案 1 :(得分:5)
您可以在命令行中添加额外文件,而不是编辑规范文件:
pyinstaller --onefile --add-data <SRC;DEST or SRC:DEST> yourfile.py
否则,请确保在spec文件中没有收集步骤:
&#34;在单文件模式下,没有调用COLLECT,EXE实例接收所有脚本,模块和二进制文件。&#34;
https://pyinstaller.readthedocs.io/en/stable/usage.html了解有关命令行标志的更多信息。
如果问题仍然存在,这也可以提供一些见解:Bundling data files with PyInstaller (--onefile)
答案 2 :(得分:0)
要修改 .spec 文件,请将 binarie=[]
更改为 binaries=None
a = Analysis(
...
binaries=None,
...
)
我知道这看起来是无稽之谈,但它确实有效!
4.3 版