Python 在PyInstaller中使用带.spec的--onefile

Python 在PyInstaller中使用带.spec的--onefile,python,pyinstaller,Python,Pyinstaller,我正在使用PyInstaller和.spec文件“编译”一个程序。我正在使用.spec文件,因为我需要在程序中包含一个额外的文件。当我尝试执行PyInstaller--onefile Prog.spec时,它仍然会在dist中创建一个文件夹,将所有文件分开,而不是像我预期的那样创建一个文件。如果我使用PyInstaller--onefile Prog.py,那么它会在dist中生成一个.exe文件,这就是我想要的。使用.spec文件时,我需要做什么特殊的事情吗?您可以在命令行中添加额外的文件,而

我正在使用PyInstaller和.spec文件“编译”一个程序。我正在使用.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