PEP8导入排序:pip install -e .安装的包算第三方库还是本地应用?
可编辑安装的自有包导入分组判定
PEP8对导入排序的分组要求为:
导入需按以下优先级分组,组间空行分隔:
- Python标准库导入
- 第三方依赖导入
- 当前项目本地应用/库导入
针对你提到的场景:自行开发的package_a通过pip install -e .完成可编辑安装,在package_b中导入时的分组判定,核心判断依据不是安装方式,也不是包是不是你本人开发,而是包和当前项目的从属关系:
- 如果
package_a是独立于package_b的单独项目,有独立的代码仓库、版本迭代节奏、发布流程,可编辑安装只是开发阶段方便联调的手段,本质上它和numpy这类公开第三方包没有区别,都属于当前项目的外部依赖,应当归为第三方导入组,对应第一种写法:
from typing import List import numpy as np from package_a import func_a from package_b import func_b
- 如果
package_a和package_b同属一个项目代码仓库,是当前项目内的组成模块,会随package_b一起迭代、打包发布,可编辑安装只是为了避免开发时手动配置路径,那它属于当前项目的本地专属库,应当归为本地导入组,对应第二种写法:
from typing import List import numpy as np from package_a import func_a from package_b import func_b
日常开发中常用的导入自动排序工具isort,默认会将安装到Python环境site-packages目录下的包(包括可编辑安装的包)识别为第三方依赖,如果需要将同仓库内可编辑安装的模块识别为本地包,可以在工具配置中把对应包名加入第一方包识别列表即可。
内容的提问来源于stack exchange,提问作者jss367
相关产品推荐
相关产品推荐

