Python 打包:了解根文件夹,从包文件导入,

Python packaging: understanding root folder, importing from package files,

我想更好地了解模块内导入的工作原理,以及如何删除代码分析中的错误条目。

我有一个包结构

/packagename
├─ /src
    ├─ /utils
    |    ├─ __init__.py
    |    └─ utils.py
    ├─ __init__.py
    ├─ main.py

在我的 main.py 文件中,第一行之一是

你注意到PyCharm的代码分析找不到utils文件夹。但是,运行/调试到这一行时,执行没有问题:

我发现在文件夹前面放一个点可以消除代码分析错误:

但最终导致

ImportError: attempted relative import with no known parent package

执行代码时。以下是调试设置:

这些设置是否符合最佳实践 python 标准?

TLDR; utils 之前没有点的东西可以正常工作,但我想了解如何修复错误。 谢谢!

绝对导入使用项目根文件夹中的完整路径指定要导入的资源。

  • 示例:
from package1 import module1
from package1.module2 import function1

相对导入指定相对于当前位置(即导入语句所在的位置)要导入的资源。

  • 示例:
from .some_module import some_class
from ..some_package import some_function
  • 我的建议:使用绝对导入方式。

首先在项目根目录中键入路径。