2011-06-23 125 views
1

是否可以动态地创建一个包,是这样的:动态创建子包

subpackage = create_subpackage(package_name, package_path) 

包装应当有一个物理路径,以便从该路径模块可以通过它导入关联。

其目的是为了能够拥有不是其父包的子目录的子包。

例如

main_package/ 
    __init__.py 

sub_package/ 
    __init__.py 
    some_module.py 

内容的main_package/__init__.py:中some_random_script.py

from main_package.sub_package import some_module 

回答

1

sub_package = create_subpackage("sub_package", "https://stackoverflow.com/a/path/to/sub_package") 
globals()["sub_package"] = sub_package 

内容虽然这不会给你正是你要求的布局,这可能帮助: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的进口行为,阅读起来。