我有一些需要环境变量的工具,我想从python代码自动设置.所以我尝试了几种方法来实现它,但它们都没有成功.这里有些例子:
我在我的python脚本中插入以下代码
import os
os.system("export ENV_VAR=/some_path")
Run Code Online (Sandbox Code Playgroud)我创建了bash脚本(env.sh)并从python运行它:
#!/bin/bash
export ENV_VAR=some_path
#call it from python
os.system("source env.sh")
Run Code Online (Sandbox Code Playgroud)是否可以使用python设置(导出)环境变量,即不直接将其导出到shell?
kin*_*all 15
设置环境变量仅为当前进程及其启动的任何子进程设置它.因此,使用os.system将仅为正在运行的shell设置它以执行您提供的命令.当该命令完成时,shell会消失,环境变量也会消失.使用它os.putenv或os.environ具有类似的效果; 为Python进程及其任何子进程设置环境变量.
我假设您正在尝试为从您或全局启动脚本的shell设置这些变量.这是行不通的,因为shell(或其他进程)不是您设置变量的Python脚本的子代.
您可以更好地在shell脚本中设置变量.如果你接着source那个脚本(以便它在shell的当前实例中运行,而不是在子shell中运行)那么它们将在脚本结束后保持设置状态.
shell 函数可以执行此操作。您需要打印出口声明并对其进行评估。
set_shell_env() {
output=$(python print_export_env.py $*)
eval $output
}
Run Code Online (Sandbox Code Playgroud)
只要您从完全相同的过程中启动“工具”(我认为是脚本),它就应该起作用:
In [1]: os.putenv("VARIABLE", "123")
In [2]: os.system("echo $VARIABLE")
123
Run Code Online (Sandbox Code Playgroud)
您不能更改其他进程或父进程的环境变量。
| 归档时间: |
|
| 查看次数: |
21507 次 |
| 最近记录: |