我有一个 Python 脚本,它使用内置模块,但也导入了一些与主脚本本身存在于同一目录中的自定义模块。
例如,我会打电话
python agent.py
agent.py 有很多导入,包括:
import checks
其中检查位于与 agent.py 相同目录中的文件中
agent/agent.py
agent/checks.py
当当前工作目录为 agent/时,一切正常。但是,如果我从任何其他目录调用agent.py,显然无法导入checks.py等错误。
无论从哪里调用 agent.py,我如何确保可以导入自定义模块,例如
python /home/bob/scripts/agent/agent.py
最佳答案
实际上,您的示例有效,因为 checks.py 与 agent.py 位于同一目录中,但说 checks.py 位于前面的目录中,例如;
agent/agent.py
checks.py
然后您可以执行以下操作:
path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
if not path in sys.path:
sys.path.insert(1, path)
del path
注意__file__
的使用。
关于python - 从不同的工作目录导入 Python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1046628/