Python のテスト スクリプトの 1 つで、このパターンを数回使用します。
sys.path.insert(0, "somedir")
mod = __import__(mymod)
sys.path.pop(0)
検索パスを一時的に変更するより簡潔な方法はありますか?
Python のテスト スクリプトの 1 つで、このパターンを数回使用します。
sys.path.insert(0, "somedir")
mod = __import__(mymod)
sys.path.pop(0)
検索パスを一時的に変更するより簡潔な方法はありますか?
シンプルなコンテキスト マネージャーを使用できます。
import sys
class add_path():
def __init__(self, path):
self.path = path
def __enter__(self):
sys.path.insert(0, self.path)
def __exit__(self, exc_type, exc_value, traceback):
try:
sys.path.remove(self.path)
except ValueError:
pass
次に、モジュールをインポートするには、次のようにします。
with add_path('/path/to/dir'):
mod = __import__('mymodule')
with
ステートメントの本体を終了するsys.path
と、元の状態に復元されます。そのブロック内でのみモジュールを使用する場合は、その参照を から削除することもできますsys.modules
。
del sys.modules['mymodule']
に値を追加sys.path
すると、一時的にのみ、つまりそのセッションのみが変更されます。
PYTHONPATH
デフォルトのインストール ディレクトリを変更すると、恒久的な変更が行われます。
したがって、一時的に現在のセッションのみを意味する場合、アプローチは問題ありませんが、現在のディレクトリまたはデフォルトのインストールディレクトリにあると予想される重要なモジュールを隠していないpop
場合は、その部分を削除できます。somedir
PYTHONPATH
http://docs.python.org/2/tutorial/modules.html#the-module-search-path