简体   繁体   中英

Unable to import module from another package

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)

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM