I am developing a package that has a file structure similar to the following:
test.py package/ __init__.py foo_module.py example_module.py If I call import package in test.py, I want the package module to appear similar to this:
>>> vars(package) mapping_proxy({foo: <function foo at 0x…}, {example: <function example at 0x…}) In other words, I want the members of all modules in package to be in package's namespace, and I do not want the modules themselves to be in the namespace. package is not a sub-package.
Let's say my files look like this:
foo_module.py:
def foo(bar): return bar example_module.py:
def example(arg): return foo(arg) test.py:
print(example('derp')) How do I structure the import statements in test.py, example_module.py, and __init__.py to work from outside the package directory (i.e. test.py) and within the package itself (i.e. foo_module.py and example_module.py)? Everything I try gives Parent module '' not loaded, cannot perform relative import or ImportError: No module named 'module_name'.
Also, as a side-note (as per PEP 8): "Relative imports for intra-package imports are highly discouraged. Always use the absolute package path for all imports. Even now that PEP 328 is fully implemented in Python 2.5, its style of explicit relative imports is actively discouraged; absolute imports are more portable and usually more readable."
I am using Python 3.3.
from package import *?