python - Pyinstaller subprocess.check_output 错误
问题描述
我已将我的应用程序与pyinstaller
2捆绑在一起*.exe
gui_app.exe (onefile)
config.ini
\libs (onedir)
winservice.exe
+ all DLLs and libs
当我使用命令手动安装服务时,winservice.exe install
一切都很好,但是当我使用 GUI 中的命令时:
def svc_install(self):
try:
svc_inst = sb.check_output([os.getcwd()+"\libs\winservice.exe", "--startup=auto", "install"])
except WinError as e:
msg.showerror(e)
我收到此错误:
File "tkinter\__init__.py", line 1705, in __call__
File "gui\pagethree.py", line 24, in <lambda>
File "gui\pagethree.py", line 35, in svc_install
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "c:\users\rs_al\dev\pyxlsql\venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "utils\configparse.py", line 20, in <module>
File "C:\Users\rs_al\AppData\Local\Programs\Python\Python37-32\lib\codecs.py", line 898, in open
file = builtins.open(filename, mode, buffering)
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\rs_al\\AppData\\Local\\Temp\\config.ini'
config.ini
为什么它在寻找AppData
?当我msg.showinfo("", os.getcwd())
改为显示当前工作目录时,它会显示带有应用程序文件和目录的当前目录。config.ini
我在winservice
代码中定义了路径,我也用gui_app
它来编辑它。
self.filename = 'config.ini'
with codecs.open(self.filename, "r", encoding="utf-8-sig") as self.config_file:
self.config_ini.insert(tk.INSERT, self.config_file.read())
self.config_ini.bind()
def save_to_file(self):
with open (self.filename, "w", encoding="utf-8-sig") as self.config_file:
data = self.config_ini.get('0.0', tk.END)
self.config_file.write(data)
在configparse
(无论如何它被 覆盖Pyinstaller
)
default_path = str(Path(__file__).parents[2])
default_config_file = str(Path(default_path+"\config.ini"))
config.read_file(codecs.open(default_config_file, encoding="utf-8-sig"))
解决方案
问题出在configparser
. 我已经向独立添加了功能,gui_app
以从主代码中排除变量交叉导入。
推荐阅读
- python - 使用python将pdf转换为png(没有pdf2image)
- node.js - 节点 16.11.1 和 npm 8.0.0 npm 错误!代码 ECONNRESET corp 代理
- reactjs - axios 删除和放置请求 - 404 错误
- python - 从一个函数中读取多个数据帧
- excel - 使用visual basic读取excel媒体文件夹中的图像
- angular - 如何提高项目> 100000的离子应用程序的性能?
- c++ - ROS2 rviz2 可停靠面板插件
- java - 理解连续子数组和的问题
- java - Javafx 可观察的值列表,这些值本身是可观察的?
- bazel - 如何验证 BAZEL 项目的正确性?