激活Python虚拟环境并在另一个python脚本中调用python脚本

问题描述 投票:0回答:1

我正在使用pipenv来管理我的软件包。我想编写一个Python脚本,该脚本调用另一个使用不同虚拟环境(VE)的python脚本。

如何运行使用VE1的python脚本1并调用另一个python脚本(使用VE2的script2)。

我发现此代码用于不需要更改虚拟环境的情况。

import os
os.system("python myOtherScript.py arg1 arg2 arg3") 

我唯一的想法只是导航到目标项目并激活shell:

os.system("cd /home/mmoradi2/pgrastertime/")
os.system("pipenv  shell")
os.system("python test.py")

但它说:

/ home /..........- GdKCBK2j的外壳已激活。 无需采取任何措施来避免嵌套环境。

我现在该怎么办?实际上,我自己的代码需要VE1,子进程(第二个脚本)需要VE2。如何在代码中调用第二个脚本?

此外,第二个脚本用作接受带有标志的输入的命令行工具:

python3 pgrastertime.py -s ./sql/postprocess.sql -t brasdor_c_07_0150  
-p xml -f  -r ../data/brasdor_c_07_0150.object.xml 

如何使用@tzaman的解决方案来称呼它

python ubuntu pipenv virtual-environment
1个回答
1
投票

每个virtualenv都有其自己的python可执行文件,您可以直接使用该可执行文件来执行脚本。

使用subprocess(比os.system更通用):

import subprocess

venv_python = '/path/to/other/venv/bin/python'
args = [venv_python, 'my_script.py', 'arg1', 'arg2', 'arg3']
subprocess.run(args)    
© www.soinside.com 2019 - 2024. All rights reserved.