无法从其他软件包导入模块

时间:2019-02-09 08:22:02

标签: python-3.x import python-packaging

我有这样的目录结构

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文件)

1 个答案:

答案 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并将路径添加到脚本根目录。