Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将变量传递给环境_Python_Linux_Python 2.7_Subprocess - Fatal编程技术网

Python 将变量传递给环境

Python 将变量传递给环境,python,linux,python-2.7,subprocess,Python,Linux,Python 2.7,Subprocess,如果我的问题不是很清楚,我很抱歉 我正在尝试创建一个变量,并将其传递到linux中的环境中。然后,我想在别的地方得到这个变量。到目前为止,我在linux命令行上尝试了以下内容: local_pc:~/home$ export variable=10 local_pc:~/home$ python -c 'import os; print os.getenv("variable")' 10 听起来不错。但是当我在python中设置export时,我将无法获得它 subprocess.call([

如果我的问题不是很清楚,我很抱歉

我正在尝试创建一个变量,并将其传递到
linux
中的环境中。然后,我想在别的地方得到这个变量。到目前为止,我在linux命令行上尝试了以下内容:

local_pc:~/home$ export variable=10
local_pc:~/home$ python -c 'import os; print os.getenv("variable")'
10
听起来不错。但是当我在python中设置
export
时,我将无法获得它

subprocess.call(["export","variable=20"],shell = True)
print(os.getenv("variable"))
None

因此,我这里的问题是如何在python中执行
xport variable=10
更新:

没有可行的方法通过环境变量在流程之间建立通信

子级可以从父级继承环境变量,但是在子级调用之后对父级环境变量的更改不会传递给子级,并且子级的环境更改对父级完全不可共享。所以不可能


我通过尝试建立一种基于令牌的循环消息传递方法对其进行了测试,但我没有看到在流程环境变量之间传递更改的方法。

更新

没有可行的方法通过环境变量在流程之间建立通信

子级可以从父级继承环境变量,但是在子级调用之后对父级环境变量的更改不会传递给子级,并且子级的环境更改对父级完全不可共享。所以不可能


我通过尝试建立一种基于令牌的循环消息传递方法对其进行了测试,但我没有看到在流程环境变量之间传递更改的方法。

更新

没有可行的方法通过环境变量在流程之间建立通信

子级可以从父级继承环境变量,但是在子级调用之后对父级环境变量的更改不会传递给子级,并且子级的环境更改对父级完全不可共享。所以不可能


我通过尝试建立一种基于令牌的循环消息传递方法对其进行了测试,但我没有看到在流程环境变量之间传递更改的方法。

更新

没有可行的方法通过环境变量在流程之间建立通信

子级可以从父级继承环境变量,但是在子级调用之后对父级环境变量的更改不会传递给子级,并且子级的环境更改对父级完全不可共享。所以不可能


我通过尝试建立一种基于令牌的循环消息传递方法对其进行了测试,但我看不到在流程环境变量之间传递更改的方法。

您只能为当前流程或其子流程更改环境变量。要在其父进程中更改环境,需要使用黑客,例如使用gdb

在您的示例中,
export variable=10
在同一进程中运行,
python-c..
命令是(shell的)子进程。因此它是有效的

在Python示例中,您试图(错误地)在子进程中导出变量并在父进程中获取它

总结如下:

  • 工作示例:父项为子项设置环境变量
  • 非工作示例:子对象尝试为父对象设置环境变量
要复制bash示例,请执行以下操作:

导入操作系统
导入系统
从子流程导入检查调用
#注意:它是有效的,但你不应该这样做,可能有更好的方法
os.environ['variable']=“10”#为当前进程及其子进程设置它
检查_调用([sys.executable或'python','-c',
“导入操作系统;打印(os.getenv(“变量”)”])
子进程要么继承父进程的环境,要么可以使用
env
参数显式设置它

例如,要更改
time
模块使用的本地时区,可以在posix系统上更改当前python进程的
TZ
环境变量:

导入操作系统
导入时间
os.environ['TZ']=':美国/纽约
time.tzset()
is_dst=time.Dayland time.localtime().tm_isdst>0
#本地时间=utc时间+utc偏移
utc_offset=-time.timezone如果不是,则为dstelse-time.altzone
打印(“%s具有utc偏移量:%.1f小时”%(
os.environ.get('TZ').lstrip(':'),utc_offset/3600。))

您只能为当前进程或其子进程更改环境变量。要在其父进程中更改环境,需要使用黑客,例如使用gdb

在您的示例中,
export variable=10
在同一进程中运行,
python-c..
命令是(shell的)子进程。因此它是有效的

在Python示例中,您试图(错误地)在子进程中导出变量并在父进程中获取它

总结如下:

  • 工作示例:父项为子项设置环境变量
  • 非工作示例:子对象尝试为父对象设置环境变量
要复制bash示例,请执行以下操作:

导入操作系统
导入系统
从子流程导入检查调用
#注意:它是有效的,但你不应该这样做,可能有更好的方法
os.environ['variable']=“10”#为当前进程及其子进程设置它
检查_调用([sys.executable或'python','-c',
“导入操作系统;打印(os.getenv(“变量”)”])
子进程要么继承父进程的环境,要么可以使用
env
参数显式设置它

例如,要更改
time
模块使用的本地时区,可以在posix系统上更改当前python进程的
TZ
环境变量:

导入操作系统
导入时间
os.environ['TZ']=':美国/纽约
time.tzset()
is_dst=time.daylight和time.localtime