如何在setup.cfg中配置本地Python依赖项
解决方案
首先要明确:setuptools的setup.cfg是面向包分发的静态配置文件,默认不支持直接写本地相对路径作为依赖,你之前直接写../mypkg2的写法不符合PEP 508依赖声明规范,setuptools会将其识别为PyPI包名去检索,自然无法生效。
针对你仅本地使用、不对外发布包的需求,有两种可行方案:
方案1:PEP 508直接路径依赖(硬编码本地路径)
直接在install_requires中使用符合PEP 508规范的本地文件URL声明依赖,修改mypkg1/setup.cfg如下:
[metadata] name = mypkg1 version = 0.0.1 [options] packages = find: python_requires = >= 3.7 install_requires = mypkg2 @ file:../mypkg2
安装时直接在mypkg1目录下执行pip install .或者开发模式pip install -e .即可,pip会自动识别相对路径安装本地的mypkg2。
注意:该写法仅适用于本地安装场景,如果你将
mypkg1打包对外分发,其他用户安装时会因为找不到对应本地路径报错,正好符合你不对外发布依赖的需求。
方案2:分离依赖声明(更适合多人开发场景)
如果你不想把本地路径硬编码到setup.cfg中,可将公共依赖和本地开发依赖分开:
setup.cfg中仅声明依赖的包名,不写路径:
[metadata] name = mypkg1 version = 0.0.1 [options] packages = find: python_requires = >= 3.7 install_requires = mypkg2
- 在
mypkg1目录下新建requirements.txt,写入本地开发的依赖路径:
# 先安装本地依赖mypkg2 -e ../mypkg2 # 再安装当前mypkg1的开发模式 -e .
- 执行
pip install -r requirements.txt即可完成两个本地包的依赖安装,后续调整路径只需要修改requirements.txt即可,不需要改动打包配置。
内容的提问来源于stack exchange,提问作者Keto
相关产品推荐
相关产品推荐

