是否可以动态创建一个包,比如:
subpackage = create_subpackage(package_name, package_path)
包应该与物理路径相关联,以便可以通过它导入来自该路径的模块。
目的是能够拥有不是其父包子目录的子包。
例如
main_package/
__init__.py
sub_package/
__init__.py
some_module.py
main_package/__init__.py 的内容:
sub_package = create_subpackage("sub_package", "/a/path/to/sub_package")
globals()["sub_package"] = sub_package
some_random_script.py 的内容
from main_package.sub_package import some_module
请您参考如下方法:
虽然这不会为您提供您所要求的确切布局,但这可能会有所帮助:http://docs.python.org/tutorial/modules.html#packages-in-multiple-directories
基本上,每个包都有一个__path__ 属性,其中包含一个列表 用于搜索子模块的位置。您可以根据自己的喜好对其进行修改。
例如
main_package/__init__.py:
__path__ += ['/tmp/some/other/path/']
/tmp/some/other/path/sub_package/__init__.py:
value = 42
test.py:
from main_package.sub_package import value
print value
如果这还不行,您可以继续阅读 import hooks ,修改 Python 导入行为的全能(并且相应地复杂)方法。
