混合多个 python 模块路径

mixing multiple python module path's

我 运行 遇到了 st运行ge 问题,我找不到答案。

我想使用可能位于不同模块中的具有相同路径名的文件(文件夹也包含空 init.py 文件):

road1/pato/
road2/pato/modtest.py

其中 modtest 仅包含 a=1 用于测试的简单脚本 test.py 包含:

import pato.modtest
print(pato.modtest.a)

和运行

PYTHONPATH=road2/ python test.py

按预期运行良好。令人困惑的是

PYTHONPATH=road1/:road2/ python test.py

报错

ImportError: No module named 'pato.modtest'

我读过的所有文档都指出 PYTHONPATH 可能包含多个路径,应该没问题,运行 程序只是按顺序浏览它们。然而,在这种情况下,在路径前面添加空路径似乎会阻止读取后面的路径。如果这是预期的行为,很好,我会很感激关于它的好文档的链接。

您有命名空间冲突。

  • 根据您的 PYTHONOPATH,当您导入 "pato.modtest" 时,Python 首先查看当前命名空间中是否存在 "pato" 或 "pato.modtest"。
  • 因为它们不存在,所以它会转到 sys.path 并尝试第一个路径,在您的情况下是 "road1/"。
  • 它在那里找到模块"pato",然后寻找对象"modtest",没有找到,它寻找模块road1/pato/modtest,没有找到,它放弃。