当存在两个不同的顶级目录作为com时,如何加载python模块com.foo2.bar

| 我在两个不同的位置有模块 例如 位置1    |-com        | -__ init__.py        | -foo1           | -__ init__.py           | -bar1.py 位置2    |-com        | -__ init__.py        | -foo2           | -__ init__.py           | -bar2.py 这两个位置按上述顺序位于PYTHONPATH中。当我尝试导入com.foo2.bar2时,出现以下错误: 追溯(最近一次通话):   文件\“ \”,第1行,在 ImportError:没有名为foo2的模块 如果我将顶级程序包名称更改为com2(即location2 / com2 / foo2 / bar2.py),则import语句将成功。 我认为我做错了什么,有人可以帮忙吗? 谢谢。     
已邀请:
您想要的在Python中称为名称空间包。使用标准库执行这些操作的一种方法是使用pkgutil。另一种方法是使用由distribute或setuptools项目提供的第三方模块pkg_resources。 PEP 382将在标准库和解释器中改进对名称空间包的支持。     
似乎python导入机制不支持将单个包拆分为多个源树。 我们使用引导程序通过Python的导入钩子PEP 302实现了这一目标:http://www.python.org/dev/peps/pep-0302/     

要回复问题请先登录注册