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:所以我们可以假设它存在于该位置,对吗?是的,它可以工作,但你是对的--使用部分路径表示法时,我需要同时导入包和模块。