python - 从不同的工作目录导入 Python 模块

标签 python

我有一个 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/

相关文章:

python - 使用 NLTK 对德语文本进行 POS 标记

python - 抓取使用 AJAX Post 填充数据的网站

python - 为什么相等整数的行为与相等列表不同?

python - 记录<a>标签的点击次数(非JS)

python - Python 上的简单 Radius 服务器

python - Bokeh 线图 : How to assign colors when plotting a large number of lines

python - 将单个 python .py 文件分解为多个具有相互依赖性的文件

Python 脚本 - 使用 mailmerge 将图像插入 docx 文件

python - float 双重列表?

python - 如何在一个变量中捕获 python 循环结果