非Poetry环境下解决Python本地相对依赖安装失败问题(支持uv)
用uv替代pip解决嵌套本地依赖路径问题
结论:uv完全可以解决这个问题
pip的问题在于处理本地file依赖时,会把子依赖里的相对路径按执行命令的目录来解析——比如你在service/service_1跑pip install,lib_2里写的../lib_1会被解析成service/lib_1,自然找不到正确的包。而uv会针对每个包的pyproject.toml所在目录来解析相对路径,也就是lib_2里的../lib_1会被正确识别为libs/lib_1,不受执行目录影响。
操作步骤
- 先安装uv:
curl -LsSf https://astral.sh/uv/install.sh | sh - 进入
service/service_1目录执行安装:# 直接安装到当前环境 uv pip install . # 或者用虚拟环境(推荐) uv venv source .venv/bin/activate uv pip install .
其他不用Poetry的替代方案
如果暂时不想换工具,也可以试试这些方法:
- 硬编码绝对路径:把lib_2和service_1的依赖路径改成绝对路径,比如
lib_1@file:///your/project/root/libs/lib_1,但换环境就得改路径,不够灵活。 - 全局可编辑安装:在项目根目录一次性安装所有包的可编辑版本:
这种方式下pip能自动处理包之间的依赖关系,不会出现路径错误。pip install -e libs/lib_1 -e libs/lib_2 -e service/service_1 - 设置PYTHONPATH:安装前把项目根目录加到PYTHONPATH里:
这样pip会从PYTHONPATH里查找本地包,不用在export PYTHONPATH=/your/project/root:$PYTHONPATH cd service/service_1 pip install .pyproject.toml里写file路径。
内容的提问来源于stack exchange,提问作者Rahul Kumar
相关产品推荐
相关产品推荐

