3

重複の可能性:
Python で親プロセスの環境を変更することは可能ですか?

私はpython 2.4.3を使用しています。http_proxy 変数を設定しようとしました。以下の例を見て、何が間違っているのか教えてください。変数はpythonに従って設定されますが、インタラクティブモードを終了すると. http_proxy 変数はまだ設定されていません。スクリプトで試してみましたが、他の変数でも試しましたが、同じ結果が得られました。OS に実際に設定される変数はありません。

Python 2.4.3 (#1, May  1 2012, 13:52:57)
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['http_proxy']="abcd"
>>> os.system("echo $http_proxy")
abcd
0
>>> print os.environ['http_proxy']
abcd
>>>
user@host~$ echo $http_proxy

user@host~$
4

2 に答える 2

3

このコードを実行すると、環境変数が設定され、その作業範囲はプロセス内のみになります。終了 (Python の対話モードを終了) すると、これらの環境は消えます。

コード「os.system("echo $http_proxy")」が示すように、これらの環境変数を使用する場合は、プロセス内で外部プログラムを実行する必要があります。これらの変数は子プロセスに転送され、子プロセスで使用できます。

于 2013-01-11T13:59:38.220 に答える
0

環境変数は「設定のグローバル データベース」ではありません。ここで環境を設定しても、そこでは何の効果もありません。

これに対する例外は、他のプログラムを呼び出すプログラムが、その子プログラムに異なる環境を提供できることです。

シェルで、入力すると

[~/]$ FOO=bar baz

追加の環境でプログラムを呼び出すようにシェルに指示しています。bazFOO

Pythonでもこれを行うことができますが、変更しos.environても効果はありません。その変数には、開始された環境に関係なく、通常の python dict のみが含まれます。に代替値を渡すことで、python が使用する環境を変更できますenvsubprocess.Popen

于 2013-01-11T14:01:52.400 に答える