Como importar membros de todos os módulos dentro de um pacote?
Estou desenvolvendo um pacote que tem uma estrutura de arquivos semelhante à seguinte:
test.py
package/
__init__.py
foo_module.py
example_module.py
Se eu ligarimport package
em test.py, eu quero que o módulo de pacote seja semelhante a este:
>>> vars(package)
mapping_proxy({foo: <function foo at 0x…}, {example: <function example at 0x…})
Em outras palavras, eu quero que os membros de todos os módulospackage
estar empackage
's namespace, e eu não quero que os próprios módulos estejam no namespace.package
não é um sub-pacote.
Digamos que meus arquivos sejam assim:
foo_module.py:
def foo(bar):
return bar
example_module.py:
def example(arg):
return foo(arg)
test.py:
print(example('derp'))
Como eu estruturo as instruções de importação em test.py, example_module.py e __init__.py para trabalhar fora do diretório de pacotes (ou seja, test.py) e dentro do próprio pacote (ou seja, foo_module.py e example_module.py)? Tudo que eu tento dáParent module '' not loaded, cannot perform relative import
ouImportError: No module named 'module_name'
.
Além disso, como uma nota secundária (conforme PEP 8): "As importações relativas para importações dentro do pacote são altamente desencorajadas. Sempre use o caminho absoluto do pacote para todas as importações. Mesmo agora que o PEP 328 é totalmente implementado no Python 2.5, seu estilo de importações relativas explícitas é ativamente desencorajado, as importações absolutas são mais portáteis e geralmente mais legível ".
Eu estou usando o Python 3.3.