2016-10-27 4 views
1

Pythonでは、プログラムパスを使用してシステムパスに追加する方法はありますか?私はsys.path.appendを知っていて、ドキュメントを検索しましたが、ちょっと混乱しています。 sys.path.appendは実際のシステムパスではなく、PYTHONPATHにのみ追加されます。システムパスにプログラムで一時的に追加できる方法はありますか?プログラムは、他のツールを呼び出すときに彼らが使用する独立した環境を維持するためシステムパスにプログラムで追加する方法は?

old_path = os.environ['PATH'] 
try: 
    os.environ['PATH'] = "{}{}{}".format('/my/new/path', os.pathsep, old_path) 
finally: 
    os.environ['PATH'] = old_path 

代わりに、その共通:

答えて

2

ただ、環境にPATH変数を更新します。

env = os.environ.copy() 
env['PATH'] = "{}{}{}".format('/my/new/path', os.pathsep, env['PATH']) 
# change other env here... 
subprocess.check_call(['my', 'tool'], env=env) 
+0

これは完全に機能するので、 'sys.append.path'は' PYTHONPATH'自体を修正するのですか? – Pyth0nicPenguin

+0

@ Pyth0nicPenguinまずは['sys.path'](https://docs.python.org/3/library/sys.html#sys.path)(' .append')であり、 'PYTHONPATH'のみです。 – xZise

+0

@ Pyth0nicPenguin - まあまあです。 'sys.path.append'は、実行中のプログラムのモジュールルックアップパスにのみ追加します。他のプログラムを実行すると、元の環境の 'PYTHONPATH'しか表示されません。 - そして、私は子プロセスとして実行し、インポートは実行しません。他のpythonスクリプトを実行して別のパスを見たい場合は、同じ 'os.environ'ゲームを' PYTHONPATH'で実行する必要があります。 – tdelaney

関連する問題