无法从另一个包导入模块

Unable to import module from another package

我有这样的目录结构

conf
    __init__.py
    settings.py
    abc.conf
    def.conf
src
    main.py
    xyz.py

src 我选择的不是打包而是普通文件夹。 我正在尝试将 settings.py 文件导入 main.py 并使用命令 python3 main.py

执行整个过程

我在 main.py 中的导入语句:import conf.settings

我遇到的错误是 No module named conf.settings,我无法理解它。

python 是不是无法将 conf 识别为包?包是否可以包含 .py 文件以外的文件(在我的例子中是 .conf 文件)

导入时python搜索当前目录和sys.path。由于您的 main.pysrc 文件夹中,因此它看不到 conf 包文件夹。幸运的是,您可以在运行时更新 sys.path

root
     conf
        __init__.py
        settings.py
     src
        main.py

因此您可以在导入 conf 模块之前从 main.py 追加 sys.path。尝试以下操作:

# main.py
import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), ".."))

from conf import settings
...

另一种方法是直接更新 PYTHONPATH 并将路径添加到脚本根目录。