我正在Windows上使用Pyinstaller为我的项目生成一个.exe文件。
我想使用--onefile
选项获得一个干净的结果和一个易于分发的文件/程序。
我的程序使用config.ini
文件来存储配置选项。此文件可以由用户自定义。
使用--onefile
选项Pyinstaller将所有声明的“数据文件”放入单个.exe
文件中。
我见过这个request,但它给出了在onefile内部而不是外部,在.exe
的同一级别和同一个dist
目录中添加bundle文件的指令。
在某个时候,我想在.spec文件中使用shutil.copy命令来复制这个文件。。。但我认为我走错了路。
有人能帮我吗?我会很感激的:-)
我的解决方案类似于@Stefano Giraldi的优秀解决方案。当将目录传递给
shutil.copyfile
时,我获得的权限被拒绝。我最后使用了
shutil.copytree
:这样可以避免使用“妹妹”文件夹,并防止它复制您希望在dist文件夹而不是临时文件夹中的配置文件。
希望能有所帮助。
A repository on Github帮助我找到了解决问题的方法。
我使用了
shutil
模块和.spec
文件来添加额外的数据文件(在我的例子中是config-sample.ini
文件)来使用Pyinstaller--onefile
选项来分配文件夹。为pyinstaller
创建一个.spec文件首先,我创建了一个makespec文件,其中包含我需要的选项:
此命令创建一个与Pyinstaller一起使用的
exefilename.spec
文件修改exefilename.spec添加shuil.copyfile
现在我编辑了
exefilename.spec
,在文件末尾添加了以下代码。此代码复制编译过程结束时所需的数据文件。 您可以使用
shutil
包中提供的所有方法。运行PyInstaller
最后一步是运行编译过程
结果是,在dist文件夹中,应该将编译后的.exe文件与数据文件一起复制。
考虑
在Pyinstaller的官方文档中,我没有找到获得此结果的选项。我认为这可以被看作是一种解决办法。。。那很有效。
相关问题 更多 >
编程相关推荐