How to temporarily modify sys.path in Python?
在我的Python测试脚本中,我多次使用此模式:
1 2 3 | sys.path.insert(0,"somedir") mod = __import__(mymod) sys.path.pop(0) |
有没有更简洁的方法来临时修改搜索路径?
您可以使用一个简单的上下文管理器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
然后要导入模块,您可以执行以下操作:
1 2 | with add_path('/path/to/dir'): mod = __import__('mymodule') |
从
1 | del sys.modules['mymodule'] |
将值附加到
永久修改通过更改
因此,如果只是暂时性地只打算用于当前会话,那么您的方法就可以了,但是如果
http://docs.python.org/2/tutorial/modules.html#the-module-search-path