添加本地路径依赖后poetry install执行失败的解决办法
问题重现
目录结构
. ├── project1 │ ├── calc.py │ └── pyproject.toml └── project2 ├── foo.py └── pyproject.toml
project1的pyproject.toml配置
[tool.poetry] name = "project1" version = "0.1.0" description = "" authors = ["sib"] readme = "README.md" [tool.poetry.dependencies] python = "^3.10" project2 = {path="/home/sib/projects/test_poetry/project2/"} [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"
project2的pyproject.toml配置
[tool.poetry] name = "project1" version = "0.1.0" description = "" authors = ["sib"] readme = "README.md" [tool.poetry.dependencies] python = "^3.10" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"
报错情况
在project1目录下执行poetry install命令时,抛出以下错误:
PoetryException Failed to install /home/sib/projects/test_poetry/project2 at ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/utils/pip.py:58 in pip_install 54│ 55│ try: 56│ return environment.run_pip(*args) 57│ except EnvCommandError as e: → 58│ raise PoetryException(f"Failed to install {path.as_posix()}") from e 59│
该问题在Ubuntu和Windows系统上均会出现。
解决方案
1. 修正project2的名称配置错误
project2的pyproject.toml中name字段被错误设置为project1,与依赖声明的project2不匹配,这是核心问题之一。修改为:
[tool.poetry] name = "project2" version = "0.1.0" # 其余配置保持不变
2. 改用相对路径声明本地依赖
绝对路径会导致跨系统兼容性问题,将project1中project2的依赖路径改为相对路径:
[tool.poetry.dependencies] python = "^3.10" project2 = {path="../project2"}
3. 清理缓存并重新执行安装
清除poetry的缓存文件,避免旧配置干扰:
poetry cache clear --all pypi poetry install
4. 更新poetry到最新稳定版
旧版本的poetry可能存在本地依赖安装的bug,执行更新:
poetry self update
内容的提问来源于stack exchange,提问作者Slavik21
相关产品推荐
相关产品推荐

