问题
So in a file foo I am importing modules:
import lib.helper_functions
import lib.config
And in helper_functions.py, I have:
import config
When I run the main function of foo I get an ImportError
EDIT: Here is the structure of the files I have
foo.py
lib/
config.py
helper_functions.py
The error results from importing config in helper_functions
Traceback (most recent call last):
File "C:\Python33\foo.py", line 1, in <module>
import lib.helper_functions
File "C:\Python33\lib\helper_functions.py", line 1, in <module>
import config
ImportError: No module named 'config'
So: when I run foo.py the interpreter is complaining about the import statements of helper_functions. Yet when I run the main of helper_functions, no such error appears.
回答1:
You need to import config
using an absolute import. Either use:
from lib import config
or use:
from . import config
Python 3 only supports absolute imports; the statement import config
only imports a top level module config
.
回答2:
In python each module has its own namespace. When you import another module you are actually only importing its name.
The name "config" exists in the module helper_functions because you imported it there. Importing helper_functions in foo brings only the name "helper_function" into foo's namespace, nothing else.
You could actually refer to the "config" name in foo.py with your current imports by doing something like:
lib.helper_functions.config
But in python is always better to be explicit rather than implicit. So importing config in in foo.py would be the best way to proceed.
#file foo.py
import lib.helper_functions
import config
来源:https://stackoverflow.com/questions/16004076/python-importing-a-module-that-imports-a-module