Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.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 - Fatal编程技术网

Python 设置环境变量,使其可以在程序外部读取

Python 设置环境变量,使其可以在程序外部读取,python,linux,Python,Linux,这是我的剧本: try: os.environ['CONSOLE'] = '1' while True: ... except KeyboardInterrupt: del os.environ['CONSOLE'] 我正在尝试设置一个名为CONSOLE的环境变量。当这个程序运行时,这个变量应该存在,一旦我用Ctrl+C退出它,它应该消失 但是,当我让程序运行并尝试从shell打印它时,我得到: $ echo $CONSOLE CONSOLE: Unde

这是我的剧本:

try:
    os.environ['CONSOLE'] = '1'
    while True:
        ...
except KeyboardInterrupt:
    del os.environ['CONSOLE']
我正在尝试设置一个名为
CONSOLE
的环境变量。当这个程序运行时,这个变量应该存在,一旦我用Ctrl+C退出它,它应该消失

但是,当我让程序运行并尝试从shell打印它时,我得到:

$ echo $CONSOLE
CONSOLE: Undefined variable.

我似乎也无法从我的PHP脚本中读取它。我的变量在哪里?我认为
os.environ
应该允许我这样做?

这是shell工作的本质,每个新进程都是如此,因此您的Python脚本来自启动它的shell

无论通过何种方式设置环境变量,都不会更改启动脚本的shell中的变量,因为脚本的环境和原始shell的环境是不同的

正如您在这里看到的,在脚本编写之后,它并没有丢失,但即使python仍在运行(Bash4.2、Python3.3)


如果您试图在PHP和Python脚本之间有效地获得命名共享内存,那么您可以像读取文件一样读取/写入文件,或者通过套接字进行通信。

这是shell工作的本质,每个新进程都是如此,因此您的Python脚本来自启动它的shell

无论通过何种方式设置环境变量,都不会更改启动脚本的shell中的变量,因为脚本的环境和原始shell的环境是不同的

正如您在这里看到的,在脚本编写之后,它并没有丢失,但即使python仍在运行(Bash4.2、Python3.3)


如果您试图在PHP和Python脚本之间有效地获得命名共享内存,那么您可以像读取文件一样读取/写入,或者通过套接字进行通信。

您不能这样做。这些变量将不会持久存在,并且在父shell中不可用。您需要以其他方式传递信息。那么,在Python脚本和PHP脚本之间共享单个布尔值的最简单方式是什么?轮询一个文件似乎有点蹩脚。
echo export CONSOLE=1>~/.bash\u rc
。。。你到底想做什么?你最好是重新思考你的方法(这让我想起了那些XY问题)取决于它们在哪里运行。如果一个启动另一个,命令行参数或环境变量将起作用。否则,某些形式的IPC。您不能这样做。这些变量将不会持久存在,并且在父shell中不可用。您需要以其他方式传递信息。那么,在Python脚本和PHP脚本之间共享单个布尔值的最简单方式是什么?轮询一个文件似乎有点蹩脚。
echo export CONSOLE=1>~/.bash\u rc
。。。你到底想做什么?你最好是重新思考你的方法(这让我想起了那些XY问题)取决于它们在哪里运行。如果一个启动另一个,命令行参数或环境变量将起作用。否则,某种形式的IPC。
>>> import os
>>> os.environ['CONSOLE'] = '1'
>>> 
[1]+  Stopped                 python3.3
$ echo $CONSOLE

$ fg
python3.3

>>> os.environ['CONSOLE']
'1'