我正在一台我没有太多控制权的机器上编写和运行Python程序.全球环境已安装Python 3.6以及数十个包.在该环境中,我需要能够运行许多脚本.
我在Python 3.9虚拟环境中运行我开发的大部分脚本.将Py3.6全局环境中的数十个包安装到我的venv中并不切实际,但我确实希望能够从我自己的3.9脚本运行一些为3.6环境设计的脚本.
我不需要与我正在运行的3.6脚本交互.我想在生成时打印输出,然后处理它产生的任何文件.
这基本上是我想做的,尽管它实际上不起作用:
def run36 (scriptname):
p = subprocess.Popen("deactivate;", "python3", scriptname, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1, universal_newlines=True)
for l in p.stdout():
print(l.rstrip())
return p.returncode
run36("some36prog.py") # will generate somenewfile.txt
with open("somenewfile.txt") as f:
...
如果正确的答案是我需要显式调用Python3.6可执行文件才能使其工作,那么我需要能够以某种方式发现其路径,而无需硬编码.