在Pyinstaller --onefile exe外部添加配置文件到dist目录
情况
我在Windows上使用Pyinstaller制作项目的.exe文件。
我想使用--onefile
option来获得干净的结果和易于分发的文件/程序。
我的程序使用一个config.ini
文件来存储配置选项。该文件可以由用户定制。
问题
使用--onefile
选项Pyinstaller将所有声明的“数据文件”放入单个.exe
文件文件中。
我已经看到了这个请求,但它给istructions添加一个包文件 的onefile内部
,而不是外部的,在与同级别.exe
,并在同一dist
目录下。
在某些时候,我曾经考虑过在.spec文件中使用shutil.copy命令来复制该文件…但是我认为这样做的方式是错误的。
有人能帮我吗?我会感激的:-)
-
Github上的存储库帮助我找到了解决问题的方法。
我已经使用
shutil
模块和.spec
文件config- sample.ini
使用Pyinstaller--onefile
选项将额外的数据文件(在我的情况下为文件)添加到dist文件夹中。为pyinstaller创建一个.spec文件
首先,我用所需的选项创建了一个makespec文件:
$ pyi-makespec --onefile --windowed --name exefilename scriptname.py
这个命令创建一个
exefilename.spec
文件与Pyinstaller一起使用修改exefilename.spec并添加shutil.copyfile
现在,我
exefilename.spec
在文件末尾编辑了以下代码。import shutil shutil.copyfile('config-sample.ini', '{0}/config-sample.ini'.format(DISTPATH)) shutil.copyfile('whateveryouwant.ext', '{0}/whateveryouwant.ext'.format(DISTPATH))
此代码复制在编译过程结束时所需的数据文件。您可以使用
shutil
软件包中提供的所有方法。运行PyInstaller
最后一步是运行编译过程
pyinstaller --clean exefilename.spec
结果是在dist文件夹中,您应该已编译的.exe文件以及复制的数据文件。
考虑
在Pyinstaller的官方文档中,我没有找到获得此结果的选项。我认为可以将其视为一种解决方法。