簡體   English   中英

激活 Python 虛擬環境並在另一個 python 腳本中調用 python 腳本

[英]Activating a Python virtual environment and calling python script inside another python script

我正在使用 pipenv 來管理我的包。 我想編寫一個 python 腳本,該腳本調用另一個使用不同虛擬環境 (VE) 的 python 腳本。

如何運行使用 VE1 的 python 腳本 1 並調用另一個 python 腳本(使用 VE2 的腳本 2)。

我在不需要更改虛擬環境的情況下找到了此代碼。

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")

但它說:

Shell for /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 的解決方案來調用它

每個 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)    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM