使用pyinstaller时的环境配置文件?

时间:2017-07-18 21:08:53

标签: python pyinstaller

我正在将一系列Python脚本打包到捆绑的EXE中。脚本使用configparser模块来处理SQL连接字符串(以及其他内容)。我正在寻找一种方法来创建三个版本的EXE,一个用于我们提升的每个环境。每个环境之间的唯一区别是SQL服务器地址。

我想出了如何在spec文件中包含文件,文件夹等,我想要做的是调用pyinstaller并根据我正在构建的环境提供不同的SPEC文件。对于集成SPEC文件,这样的东西:

a = Analysis(['normalization_updater.py'],
             binaries=[],
             datas=[
                ('*.py', '.'),
                ('resources/config_int.cfg', 'resources/config.cfg')
             ],

和PROD:

a = Analysis(['normalization_updater.py'],
             binaries=[],
             datas=[
                ('*.py', '.'),
                ('resources/config_prod.cfg', 'resources/config.cfg')
             ],

换句话说,我想根据通过glob模式使用哪个SPEC文件将捆绑的配置文件重命名为EXE。

或者有没有更好的方法来处理使用pyinstaller EXE的功能切换?也许喂它命令行开关?如果我正在读这个权利the docs说这是不可能的。

  

您可以将命令行选项传递给Python解释器。解释器采用了许多命令行选项,但捆绑的应用程序仅支持以下选项:

     
      
  • v每次初始化模块时都向stdout写入一条消息。

  •   
  • u为无缓冲的stdio。

  •   
  • W和更改警告行为的选项:W忽略或W一次或W错误。

  •   

1 个答案:

答案 0 :(得分:0)

不确定这是你需要的,但在这里你如何使用单个spec文件只是改变开始的一行

env='int'

a = Analysis(['normalization_updater.py'],
         binaries=[],
         datas=[
            ('*.py', '.'),
            ('resources/config_' + env + '.cfg', 'resources/config.cfg')
         ],