python - Pyinstaller:当我使用 pyinstaller 创建 .exe 文件时,在 python 中使用内置函数打开的可执行文件在 1 秒后关闭
问题描述
我在python中制作程序来打开路径给出的一些可执行文件。我用:
os.startfile(path)
启动程序。当我在 IDLE 中运行 script.py 时它工作正常,但是当我使用 pyinstaller 制作 .exe 文件时,当我运行它时,我想要打开的程序开始打开并几乎立即关闭。我尝试了不同的功能,比如subprocess.Popen(path)
它做同样的事情,在 1 秒后打开和关闭程序。有人能帮我吗?python函数或pyinstaller甚至Windows 10中是否存在问题?
解决方案
问题是您的代码很可能只是运行然后窗口关闭。
您可以添加import time
到您的导入和time.sleep(x)
/或其他内容以在运行后保持窗口打开 x 秒
在做任何事情之前通读一遍!
好的,试试这个:
把它放在一个名为 start.py 的 python 文件中:
import os
import subprocess
#py_command - whatever opens python in cmd
#path - must be full path of file you want to call
def StartPythonScript(path, py_command):
command = 'start cmd /k ' + py_command + " " + path
subprocess.run(command, shell=True)
现在,从您从 exe 调用的文件中获取代码,假设它的名称是 run.py,然后将它放在另一个文件中,例如 code.py。
确保 start.py 与 run.py 位于同一文件夹中
在 run.py 中,输入:
import start
cmd = "py" #change this to whatever opens python in cmd
path = "code.py" #change to the full path of code.py
start.StartPythonScript(path, cmd)
因此,当您单击 exe 时,它会打开 run.py,它会告诉 start.py 打开 code.py,其中包含您的程序。
您实际上可以合并 start.py 和 run.py,但如果它们是分开的,您可以重用 start.py。
或者...
添加import os
到由 exe 调用的程序中。添加os.system("pause")
到程序的末尾。
我不确定这是否适用于无限运行的程序......但首先尝试这个以节省时间。
更多信息:
如何在 Microsoft Windows 中执行时立即停止 Python 关闭
祝你好运!
推荐阅读
- css - 仅使用 absolute\left 将 2 个不同宽度的不同元素居中,如何计算偏移量?
- reactjs - 如何从 3rd 方 API 重定向 URL 以响应组件并接收发布/响应数据?
- reactjs - 我如何运行测试以使用 jest 和酶呈现标题。我得到以下错误方法“文本”意味着在 1 个节点上运行。找到了 0 个
- html - 很少有字体可怕的图标没有显示
- mysql - 从消息表中获取不同的最近联系人列
- odoo - “odoo-bin”命令在我的 Odoo 13.0(Windows 安装)中不起作用
- google-ads-api - 使用 Google Ads API 将自己拉进一个盒子。无法验证除我之外的其他用户
- laravel - Laravel 5.2 比较大于或等于不工作?
- python - 在 Maya 中查看正在进行的 Alembic 缓存
- python-3.x - 自定义对象级 DRF 权限不起作用