问题
I have a directory structure like this
conf
__init__.py
settings.py
abc.conf
def.conf
src
main.py
xyz.py
src I chose not to make a package but a regular folder.
I am trying to import the settings.py file in the main.py and executing the whole thing with the command python3 main.py
My import statement in main.py : import conf.settings
The error I'm getting is No module named conf.settings
and I can't get my head around it.
Is python failing to recognize conf as a package? Can packages contain files other than .py files (.conf files in my case)
回答1:
When importing python search current directory and the sys.path
. Since your main.py
is in src
folder it cannot see the conf
package folder. Luckily you could update sys.path
at runtime.
root
conf
__init__.py
settings.py
src
main.py
So you could append sys.path
from main.py
before importing conf
module. Try following:
# main.py
import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), ".."))
from conf import settings
...
The other way is to update PYTHONPATH directly and add path to your script root directory.
来源:https://stackoverflow.com/questions/54604493/unable-to-import-module-from-another-package