python设置临时环境变量,使用临时环境变量运行Python脚本

您将需要一个“loader”小程序,它将使用适当的变量调用第二个程序。

当然,在Python中使用它会更方便,因为所有的东西都已经设置好了,但是它可能会有一些变化#!/usr/bin/env python3

import subprocess

import sys

import yaml

config = yaml.load(open(sys.argv[1]))["data"]

# Instead of "data" here, use the yaml path to the place in the configuration your variables are

cmdline = sys.argv[2:]

if cmdline[0].endswith(".py"):

cmdline.insert(0, sys.executable)

result = subprocess.run(cmdline, env=config)

exit(result.returncode)

(当然,您需要安装一些第三方lib来读取yaml配置文件-我用PyYAML来测试这一点)

如果将上面的脚本标记为可执行,则可以直接在命令行中使用它,而不必加前缀“python3”—否则,如果将此文件命名为跑步者.py“您的命令行可以

^{pr2}$

如果您需要传递当前环境并使用脚本中的变量进行更新,请在.run调用之前执行以下操作:import os

...

config = yaml.load(...)[...]

config = {**os.environ, **config}

另外,请注意,它将使用运行在其上的同一个Python解释器来执行脚本,这或多或少有些幼稚(只检查文本“.py”文件扩展名)——如果您需要它更健壮,建议对目标脚本执行stat并检查它是否可执行,然后直接调用它,并且只对其他文件使用当前的Python解释器。在

或者修改你的代码

由于您只有一个脚本作为入口点,并且希望简化对第三方空间的运行,所以您可以更改它,而不是使用通用的加载程序-

在这种情况下,我建议添加一个额外的配置变量来表明变量已经被正确设置了—所以当脚本在其容器中运行时,它什么也不做—否则,它会像上面一样加载数据,并将其操作系统环境. 在

换句话说,在代码的入口点,执行以下操作:if not os.environ.get("EVERYTHING_SETUP"):

import yaml

config = yaml.load(open("myconfig.yaml"))["data"]

os.environ.update(config)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值