将脚本转换为包括数据文件的可执行文件

2024-09-24 12:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小的应用程序,作为我办公室其他成员的实用程序。我是一个it人员,在一个绝对非技术性的行业,所以我试图让这一切尽可能简单,同时也给自己改变程序的能力,而不必重新冻结整个程序。因此,我的程序如下所示:

| C:\Program Files (x86)\company_name\product_name
| | findppw.exe (my script)
| | runtime files that are built during the freeze
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
| %APPDATA%\company_name\product_name\
| | Reports\
| | | This gets filled with temp files only
| | Logs\
| | | This gets filled with log files
| | config.ini
| | stores.ini

我在准备%APPDATA%文件夹时遇到了一些问题,这应该是本问题的重点。在

我的findppw.pyw脚本具有以下导入:

^{pr2}$

我尝试过同时使用^{}和{a2}来冻结它。在

py2exe:

py2exe将正确编译有或没有安装脚本的程序,但在这两种情况下,生成的可执行文件在启动时都会抛出一个Windows错误:“Find Paperwork has stopped working”,没有更多信息。转储创建的日志文件在故障排除中没有用处,不过如果有人认为它们有用,我可以根据请求提供它们。在

cx冻结:

当py2exe让我失望时,我去找了一个替代品,找到了cx_Freeze。它承诺可以使用安装程序(“万岁”,我想,“应该为我处理%APPDATA%安装程序!”)但是我对如何设置setup.py以这种方式处理它有点不知所措,实际上如果可能的话!我的替代方法是在我的脚本中创建一个initialize函数,该函数检查这些文件夹/文件是否存在,如果这些文件夹/文件不存在,则将它们创建为初始硬编码值。不过,这感觉像是安装程序的工作,而不是可执行文件。在

不过,作为一个结果,可执行函数是这样的。。。。在

问题是:

我怎么能写一个设置.pycx_Freeze编辑的脚本:一个很好的注释建议使用pyinstaller,那么让我修改一下,让我说任何一个在正确位置抛出数据文件的库,同时留给我一个windows安装程序,我可以用它将程序分发到其他内部系统?在

推论,但可能超出了这个问题的范围:为什么py2exe方法失败?在


Tags: 文件函数name程序脚本文件夹filesproduct
2条回答

我不确定我是否理解您的问题,但是您可以使用py2exe或pyinstaller来创建二进制文件。然后手动查找任何缺少的库并使用Inno Setup创建安装程序。也许一根木头会有帮助。在

我不同意这是安装工的工作。如果每次启动程序时都包含一个复选框(How to check if a directory exists and create it if necessary?),则当appdata文件夹消失时,程序不会被阻止。在

如果安装后需要写入ini文件,它们应该在appdata文件夹中。可以在文件夹中复制模板,作为需要的副本。在

关于cx冻结:使用命令python setup.py bdist_msi生成msi。在https://bitbucket.org/anthony_tuininga/cx_freeze/src/bd72fda4b395257c3d8e170213c039f2da40dd2f/cx_Freeze/samples/?at=default中有安装文件的示例,也有在cx冻结安装中的示例。文档位于http://cx-freeze.readthedocs.org/en/latest/index.html。在

相关问题 更多 >