2011-06-23 57 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的進口行爲,閱讀起來。