14

投稿できない複雑なソフトウェアがあり、具体的な動作例もありません。問題を説明しようと思いますが、おそらく誰かが以前にこれに遭遇した可能性があります。

Linux シェルでは、環境変数を定義しました。

> export MY_TEST_ENV=4711
> echo $MY_TEST_ENV
> 4711

複雑なコード内で、この変数を取得したい

print os.getenv('MY_TEST_ENV')

これは常に を返しますNone。この動作をテストするテスト スクリプトを作成すると、別のファイルにクラスがある場合でもos.getenv('MY_TEST_ENV')、正しい値を返すなど、常に目的の動作が得られます4711

コードは で始まりsudoます。

理由は何ですか?

4

1 に答える 1

12

ほとんどの場合、Python プロセスを呼び出す方法によって、環境が失われます。実行中のシェル内で変数をエクスポートし、その直後に問題の Python プロセスを同じシェルで呼び出す場合、この環境変数はこの Python プロセスで確実に使用できるはずです。この問題のデバッグを支援するには、問題のコード ( print os.getenv('my...')) の代わりに、 を介して環境全体を出力しますprint os.environ。この結果から、環境に何が起こったのかを推測できるはずです。

于 2012-09-11T10:41:12.290 に答える