是否可以动态创建包,如:
subpackage = create_subpackage(package_name, package_path)
包应该与物理路径相关联,以便可以通过它导入该路径中的模块。
目的是能够拥有不是其父包的子目录的子包。
e.g。
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
答案 0 :(得分:1)
虽然这不会为您提供所需的布局,但这可能有所帮助:http://docs.python.org/tutorial/modules.html#packages-in-multiple-directories
基本上,每个包都有一个__path__
属性,其中包含 列表,用于搜索子模块。你可以根据自己的喜好进行修改。
e.g。
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导入行为的全能(并且相应复杂)方式。