我有这样的目录结构
conf
__init__.py
settings.py
abc.conf
def.conf
src
main.py
xyz.py
src我选择不制作软件包,而是选择常规文件夹。
我正在尝试在main.py中导入settings.py文件,并使用命令python3 main.py
我在main.py中的导入语句:import conf.settings
我遇到的错误是No module named conf.settings
,我无法理解。
python是否无法将conf识别为软件包?包中是否可以包含.py文件以外的文件(本例中为.conf文件)
答案 0 :(得分:1)
在导入python时搜索当前目录和sys.path
。由于您的main.py
位于src
文件夹中,因此无法看到conf
软件包文件夹。幸运的是,您可以在运行时更新sys.path
。
root
conf
__init__.py
settings.py
src
main.py
因此,您可以在导入sys.path
模块之前,从main.py
附加conf
。尝试以下操作:
# main.py
import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), ".."))
from conf import settings
...
另一种方法是直接更新PYTHONPATH并将路径添加到脚本根目录。