gpt4 book ai didi

python - 如何从转换为exe的python脚本运行exe文件

转载 作者:行者123 更新时间:2023-12-04 01:05:27 25 4
gpt4 key购买 nike

我有两个 EXE 文件,实际上都是 python 脚本,使用 pyinstaller 转换(使用 Auto Py 到 Exe)。

file1.exe :是应用程序。file2.exe : 是许可证应用程序,它检查许可证,如果正常则执行 file1,否则退出。

我的问题是,当我将两个 exe 文件合并为 1 个 exe 文件时,file2.exe 找不到 file1.exe,除非我将它复制到同一目录。

pyinstaller 命令:

pyinstaller -y -F --add-data "D:/test/file1.exe";"."  "D:/test/file2.py"

现在我应该有这样的东西:

file2.exe 
+------- file1.exe

但是每次我运行 file2.exe 时它都会给我这个错误

WinError 2] The system cannot find the file specified: 'file1.exe'

直到我将 file1.exe 复制到同一目录(因为它忽略了我已经将它合并到 pyinstaller 中)所以文件树看起来像这样:

file1.exe
file2.exe
+------- file1.exe

file2 中启动 file1 的命令行是:

  os.system('file1.exe')

我该如何解决?

最佳答案

当您执行 os.sysetm('file1.exe') 时,它会在您运行 file2.exe 的当前工作目录中找到它。

因此,您需要执行以下操作才能使用 file2.exe 中捆绑的 file1.exe

import sys, os
if getattr(sys, 'frozen', False):
# we are running in a bundle
bundle_dir = sys._MEIPASS
else:
# we are running in a normal Python environment
bundle_dir = os.path.dirname(os.path.abspath(__file__))

os.system(os.path.join(bundle_dir, 'file1.exe'))

正如我在评论中提到的,检查 Run-time Information PyInstaller 文档中的部分。

作为旁注,与您的问题无关,最好使用 subprocess.run(),而不是 os.system()

关于python - 如何从转换为exe的python脚本运行exe文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66625845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com