python - 将脚本转换为可执行文件,包括远程文件夹中的数据文件

标签 python python-3.x py2exe cx-freeze

我已经构建了一个小型应用程序作为我办公室其他成员的实用程序。我是一个 I.T.一个绝对非技术行业的人,所以我试图让它尽可能简单,同时仍然让我自己能够更改程序而无需重新卡住它的整体。因此,我的程序看起来像这样:

| 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 脚本有以下导入:

from tkinter import *
from tkinter import ttk
import threading
from collections import OrderedDict
import datetime
import zipfile
from tempfile import NamedTemporaryFile
import queue
import os,sys # for sys.exit and os.startfile
import logging
from appdirs import AppDirs # to find %appdata% equivalent
import ast # for literal_eval of info in stores.ini and config.ini

我试过同时使用 cx_Freezepy2exe用于冷冻。

py2exe:

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

cx_卡住:

当 py2exe 失败时,我开始寻找替代方案并找到了 cx_Freeze。它 promise 能够使用安装程序(“万岁,”我想,“它应该为我处理 %APPDATA% 设置!”)但我对如何设置 setup.py 以这种方式处理它,如果可能的话!我的替代方法是在我的脚本中创建一个 initialize 函数来检查这些文件夹/文件是否存在,如果它们不存在,则将它们创建为某个初始硬编码值。不过,这感觉就像安装程序的工作,而不是可执行文件。

不过,作为一个结果,可执行文件起作用了,所以......

问题:

我如何为 cx_Freeze 编写 setup.py 脚本将此修改为说任何将数据文件放在正确位置的库,同时给我留下一个 Windows 安装程序,我可以使用它来将程序分发到其他办公室系统?

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

最佳答案

我不同意这是安装程序的工作。如果您在每次启动程序时都添加一个检查 ( How to check if a directory exists and create it if necessary? ),那么即使 appdata 文件夹消失,您的程序也不会变砖。

如果您需要在安装后写入 ini 文件,它们应该在 appdata 文件夹中。在这种情况下,程序文件夹中的副本将用作模板,并且可以根据需要进行复制。

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

关于python - 将脚本转换为可执行文件,包括远程文件夹中的数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24682717/

相关文章:

Python:ValueError:无法将字符串转换为 float : '0'

python - 从接口(interface)名称而不是摄像机编号创建 openCV VideoCapture

python - 在 Pandas lambda 函数中测试字典条目

python - 停止 Pandas group by 中的处理循环

python - Py2Exe 没有这样的文件或目录错误

python - 使用 py2exe 将 tkinter 编译为可执行文件,但 xlrd 存在问题

python - 将 PyInstaller 与 Bokeh 和 CustomJS 结合使用

python - 使用 Python Loop 从 Excel 文件创建多个 .txt 文件

python - 尝试通过 API 将成员添加到 Google 群组时获取 'Missing required field: member'

python - 如何阅读文档中的 D.update([E, ]**F) ?