0

次のPythonスクリプト(repro.pyという名前)を実行すると、予期しない動作が発生しました。

import os
print os.environ['PATH'].replace(';', '\n')

によって呼び出された場合python repro.py、私はこれを取得します:

C:\ Python26 \
C:\ Python26 \ Scripts
C:\ Windows \ system32
C:\ Windows
C:\ Windows \ System32 \ Wbem
C:\ Program Files \ MySQL \ MySQL Server 5.1 \ bin

repro.pyコマンドプロンプトで入力して呼び出すと、次の結果が得られます。

C:\ Python26 \

起動方法に応じて、明らかrepro.pyに異なる環境を継承します。Pythonインタープリターへの最初の引数として開始されたとき、それは私が期待するように動作します。一方、.pyファイルを「開く」ときに使用するプログラムを自動的に判断するプロセスによって開始されると、非常に厳しい環境を継承します。ある種のセキュリティ機能のようなにおいがし始めます。

両方の呼び出し方法を同じように、できれば同等に動作させる方法はありますpython repro.pyか?なぜこれが起こっているのか誰かが知っていますか?

バージョン情報:ActivePython 2.6.5.12 (ActiveState Software Inc.)Windows7の場合。

4

1 に答える 1

0

それは奇妙です。Windows7でpython.orgから標準のpython2.7を実行していますが、どちらの呼び出しでも、期待どおりに完全なPATHが出力されます。

これはバグ、またはActivePythonの「機能」である可能性があります。:)

ただし、同じコマンドプロンプトウィンドウで両方を開いていますか?おそらくあなたの道は本当に変わったのでしょうか?

于 2011-02-25T02:34:39.427 に答える