如何在Python中设置父shell的环境变量? [复制]

问题描述 投票:1回答:2

此问题已经在这里有了答案:

我正在尝试从Python内部修改父外壳上的环境变量。到目前为止,我没有尝试过:

~ $ export TESTING=test
~ $ echo $TESTING
test
~ $
~ $
~ $ python
Python 2.7.10 (default, Jun  1 2015, 18:05:38)
[GCC 4.9.2] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['TESTING']
'test'
>>> os.environ['TESTING'] = 'changed'
>>> os.environ['TESTING']
'changed'
>>> quit()
~ $
~ $
~ $ echo $TESTING
test

这就是我所能想到的。能做到吗如何在Python中设置父级外壳的环境变量?

python shell environment-variables
2个回答
2
投票

这是不可能的。

子进程从其父级继承其环境,而不是共享它们。因此,您对环境所做的任何修改都会在子(python)进程中反映为[[only。实际上,您只是覆盖os模块根据您的Shell环境而不是Shell的实际环境变量创建的字典。

https://askubuntu.com/questions/389683/how-we-can-change-linux-environment-variable-in-python

Why can't environmental variables set in python persist?


2
投票
您可以做的是通过使用外壳程序的Command Substitution功能将Python命令的输出解析为外壳程序命令,该功能通常用于在线评估另一个命令。例如。 chown `id -u` /somedir

在您的情况下,您需要将shell命令打印到stdout,它将由shell评估。创建您的Python脚本并添加:

testing = 'changed' print 'export TESTING={testing}'.format(testing=testing)

然后从您的外壳:

$ `python my_python.sh` $ echo TESTING changed

基本上,任何字符串都将由shell解释,甚至是lsrm
© www.soinside.com 2019 - 2024. All rights reserved.