我正在開發具有類似如下的文件結構的包:如何導入模塊成員包內
test.py
package/
__init__.py
foo_module.py
example_module.py
如果我調用test.py import package
,我想封裝模塊出現與此類似:
>>> vars(package)
mapping_proxy({foo: <function foo at 0x…}, {example: <function example at 0x…})
換句話說,我希望所有的模塊在package
成員在package
的命名空間,我不希望這些模塊本身是在命名空間。 package
不是一個子包。
比方說,我的文件是這樣的:
foo_module.py:
def foo(bar):
return bar
example_module.py:
def example(arg):
return foo(arg)
test.py:
print(example('derp'))
如何我是否構造進口? test.py,example_module.py和__init__.py中的聲明可以從package目錄之外工作(即, test.py)和包內部(即foo_module.py和example_module.py)?我嘗試的所有東西都給出Parent module '' not loaded, cannot perform relative import
或ImportError: No module named 'module_name'
。
另外,作爲一個旁註(按照PEP 8):「對於包內導入的相對導入是非常不鼓勵的,總是對所有導入使用絕對包路徑,即使現在PEP 328已經在Python中完全實現2.5,其顯式相對進口的風格是積極的阻止;絕對進口更便攜,通常更具可讀性。「
我正在使用Python 3.3。
我只是把它放在這裏不盲目嘗試:怎麼樣'從包導入*'? – Skyler
@Skyler,在哪個文件? –