How to load a python module com.foo2.bar when there are two different locations with top level directory as com
我在两个不同的地方有模块
例如
1 2 3 4 5 6 7 8 9 10 11 12 13 | Location1 |- com |-__init__.py |-foo1 |-__init__.py |-bar1.py Location2 |- com |-__init__.py |-foo2 |-__init__.py |-bar2.py |
这两个位置按上述顺序排列在Python路径中。尝试导入com.foo2.bar2时,出现以下错误:
1 2 3 | Traceback (most recent call last): File"", line 1, in ImportError: No module named foo2 |
如果将顶级包名称更改为com2(即location2/com2/foo2/bar2.py),则import语句成功。
我想我做了一些不正确的事情,有人能帮忙吗?
谢谢。
您需要的是在python中称为名称空间包。使用标准库的一种方法是使用pkgutil;另一种方法是使用distribute或setuptools项目提供的第三方模块pkg_资源。
对名称空间包的支持将在带有PEP 382的标准库和解释器中得到改进。
似乎python导入机制不支持将单个包拆分为多个源树。
我们通过python的import hooks pep 302使用bootstrapping实现这一点:http://www.python.org/dev/pep s/pep-0302/