sách gpt4 ai đã đi

Chạy một tập lệnh python từ python bằng cách sử dụng một python khác

In lại 作者:太空宇宙 更新时间:2023-11-04 06:43:04 33 4
mua khóa gpt4 Nike

我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。

我试过用

#!python2.7.5

http://redsymbol.net/articles/env-and-python-scripts-version/

但是我无法让它工作...在我的 python 2.5.5 中,我可以执行脚本execfile("c:/script/test.py")

问题是 2.7.5 有一个模块 comtypes + 其他几个。我不知道如何为我的 2.5.5 安装它,所以我试图启动一个单独的脚本并在 python27 下运行它。现在我想要它的另一个原因是因为我想减轻程序的负担。我有 2 项繁重的任务要执行。第二个任务是需要 comptypes 的任务,因此将其发送到外部 shell/app 将是完美的把戏。有办法吗?

我希望我可以直接输入 run("C:/Python27/python.exe % C:/script/test,py")

谢谢,再见。

小更新。我试着跑

nhập khẩu hệ điều hành 
os.system("\"C:\Python27\python.exe\" D:\test\runTest.py")

但是我得到了一个快速弹出并关闭的窗口说导入错误:没有名为站点的模块...如果我从外部 shell 运行但不是从这里运行,这会起作用 :(

所以这次我尝试了另一种方法来向 python 添加模块......无论如何我运行这个:

nhập khẩu hệ điều hành 
nhập khẩu hệ thống
sys.path.append("C:/python27")
sys.path.append("C:/Python27/libs")
sys.path.append("C:/Python27/Lib")
sys.path.append("C:/Python27/Lib/logging")
sys.path.append("C:/Python27/Lib/site-packages")
sys.path.append("C:/Python27/Lib/ctypes")
sys.path.append("C:/Python27/DLLs")
import PyQt4
print PyQt4
import comtypes
nhập khẩu ghi nhật ký

但它因 C 错误而崩溃...运行时错误:程序:c:\Pr...R6034应用程序已尝试错误地加载 C 运行时库。blablabla....

如何导入?也许如果我可以导入它,我可以直接从我的应用程序运行它,而不是启动单独的 python...

Theo dõi (cuộc gọi gần đây nhất là cuộc gọi cuối cùng):
File "", line 18, in
File "C:\Python27\Lib\site-packages\comtypes\__init__.py", line 22, in
from ctypes import *
File "C:\Python27\Lib\ctypes\__init__.py", line 10, in
from _ctypes import Union, Structure, Array
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.

isseu 的另一个更新

所以我现在就跑

nhập khẩu hệ điều hành
os.system("start cmd {D:\test\runTest.py}")

现在这有效,他打开 CMD,目录为 c:\Python27,但他没有运行该文件...任何 hitns 如何修复它?

1 Câu trả lời

使用“原始”字符串,这样您就不需要转义太多;我认为反斜杠破坏了您的代码,因为反斜杠在原始字符串中被视为转义字符 ngoại trừ.

此外,使用 subprocess 模块。它可以很容易地避免手动创建安全的命令字符串(该模块会为您处理)。您需要做的就是向它传递一个参数列表。

你的代码看起来像这样:

import subprocess 

proc = subprocess.Popen([r"C:\Python27\python.exe", r"D:\test\runTest.py"])

# then either do this
proc.wait() # wait until the process finishes

# or this
trong khi Đúng:
# NOTE: do something else here

# poll the process until it is done
if proc.poll() is not None:
break # break out of loop

参见 Python 2 的子进程文档 đây .请务必检查是否在 Python 2.5 之后添加了某个功能(据我所知,2.5 文档不再在线提供)。

làm mới:

我刚注意到您试图在 2.5 代码中使用 Python 2.7 库和模块。由于 2.5 之后添加的新功能,这可能无法正常工作。但这让我开始思考如何让 2.7 正常工作。

可能是你安装的Python2.7找不到它的库;这可能就是您收到错误 Import Error : no module named site 的原因。您可以执行与上述类似的操作,并在 启动子进程之前修改 PYTHONPATH 环境变量,如下所示:

nhập khẩu hệ điều hành
import subprocess

paths = [r"C:\python27", r"C:\python27\libs", r"C:\python27\Lib\site-packages", r"C:\python27\DLLs"]
paths += os.environ.get('PYTHONPATH', '').split(os.pathsep)

env27 = dict(os.environ)
env27['PYTHONPATH'] = os.pathsep.join(paths)

proc = subprocess.Popen([r"C:\Python27\python.exe", r"D:\test\runTest.py"], env=env27)

关于python - 使用不同的 python 从 python 运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18180754/

33 4 0
Bài viết được đề xuất: c - 带有 HP CC 编译器的 PA-RISC 内联汇编
Bài viết được đề xuất: javascript - 无法设置复选框 HTML/CSS 的样式
Bài viết được đề xuất: 我们可以将参数传递给 C 中的信号吗?
Bài viết được đề xuất: html - 如何在页面上放置表格
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com