在Pyinstaller --onefile exe外部添加配置文件到dist目录

发布于 2021-01-29 15:07:02

情况

我在Windows上使用Pyinstaller制作项目的.exe文件。

我想使用--onefileoption来获得干净的结果和易于分发的文件/程序。

我的程序使用一个config.ini文件来存储配置选项。该文件可以由用户定制。

问题

使用--onefile选项Pyinstaller将所有声明的“数据文件”放入单个.exe文件文件中。

我已经看到了这个请求,但它给istructions添加一个包文件 的onefile内部
,而不是外部的,在与同级别.exe,并在同一dist目录下。

在某些时候,我曾经考虑过在.spec文件中使用shutil.copy命令来复制该文件…但是我认为这样做的方式是错误的。

有人能帮我吗?我会感激的:-)

关注者
0
被浏览
79
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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的官方文档中,我没有找到获得此结果的选项。我认为可以将其视为一种解决方法。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看