如何通过命令行覆盖 env vars set dotenv?

How can I override env vars set dotenv via command line?

我的主文件中有以下脚本,我想在 运行 脚本(例如 python -e MODE=train main.py

main.py

from dotenv import load_dotenv
load_dotenv()

import os

if __name__ == "__main__":
    print(os.environ["MODE"])

.env

MODE=test

使用 Python 个子流程:

import subprocess

subprocess.run(["python", " -e", "MODE=\"train main.py\""])

您可以管理脚本接收的命令行参数

import os
import sys
from dotenv import load_dotenv
load_dotenv()


if __name__ == "__main__":
    print(os.environ["MODE"])
    param_mode = sys.argv[1]
    value_mode = param_mode.split('=')[1]
    os.environ["MODE"]=value_mode
    print(os.environ["MODE"])

你的电话应该是这样的:

python main.py MODE=train

解释:

sys.argv[1] 包含 MODE=train 字符串,所以你用'='分割只得到参数值.