Unable to import module from another package

2019-07-27 00:07发布

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条回答
萌系小妹纸
2楼-- · 2019-07-27 00:41

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.

查看更多
登录 后发表回答