Python引用具有部分路径的模块

Python引用具有部分路径的模块,python,python-import,Python,Python Import,我有以下目录结构: ├── package1 │   ├── __init__.py │   └── package2 │   ├── __init__.py │   └── module2.py └── script.py script.py文件如下所示: import package1.package2.module2 import package1.package2 if __name__ == '__main__': package1.package2.mod

我有以下目录结构:

├── package1
│   ├── __init__.py
│   └── package2
│       ├── __init__.py
│       └── module2.py
└── script.py
script.py文件如下所示:

import package1.package2.module2
import package1.package2

if __name__ == '__main__':
    package1.package2.module2.run()  # This works
    package2.module2.run()           # This fails
执行失败,出现此错误,NameError:未定义名称“package2”


如何更改代码,使
package2.module2
被识别为导入的模块?

script.py
存在漏洞,因为它期望
package2
名称突然出现-显示的导入语句仅将名称
package1
带入命名空间

它可以使用
from package1导入package2
,这样
package2
就位于名称空间中。在这种情况下,需要单独导入
模块2

最典型的是单个导入语句:

from package1.package2.module2 import run

if __name__ == "__main__":
    run()

您是否尝试过使用文档中的前导点符号?我不明白你所说的为什么行不通。怎么了?用错误消息名称更新了问题错误:名称“package2”未定义。@史蒂夫:似乎没有包含
module2
文件的
package2
目录。“这可能就是错误的原因。”拉克什亚拉吉明白。原始问题的原因是为了增强部分路径的可读性,而不会使完整路径变得过于冗长。@Steve:所以我们可以假设它存在于该位置,对吗?是的,它可以工作,但你是对的--使用部分路径表示法时,我需要同时导入包和模块。