如何指定 pip 在诗歌的pyproject.toml
中可以使用的相对路径?
诗歌成功安装了它们,但是pip失败并出现以下错误:
File "/tmp/pip-build-env-ck09aiax/overlay/lib/python3.7/site-packages/poetry/core/packages/directory_dependency.py", line 36, in __init__
raise ValueError("Directory {} does not exist".format(self._path))
ValueError: Directory ../lib_foo does not exist
示例
我具有以下存储库结构
.
├── lib_foo
│ ├── lib_foo
│ │ └── __init__.py
│ └── pyproject.toml
└── main_app
├── main_app
│ └── __init__.py
└── pyproject.toml
main_app
依赖于lib_foo
,其依赖关系如下所示:
./main_app/pyproject.toml
[tool.poetry.dependencies]
python = "^3.7"
lib-foo = { path = "../lib_foo" } # also tried path = "../lib_foo/"
这样做的时候:
./main_app$ poetry install # runs successfully
./main_app$ python -m pip install ../lib_foo/ # runs successfully
./main_app$ python -m pip install . # fails with the error mentioned above
./main_app$ python -m pip --version
pip 20.1.1 from ./main_app/my_venv/lib/python3.7/site-packages/pip (python 3.7)
我在开发项目时使用poetry
,但是在部署项目时我只想使用pip
相关的issue
答案 0 :(得分:1)
我很确定 pip 不能处理具有相对路径的依赖项。绝对路径可能没问题。
我的看法是 pip 在core metadata format中获得依赖关系,因此对于依赖关系,格式为PEP 508,它表示:
PEP-440 [4]中指定的URL参考表单实际上并未在pip中实现,但是由于PPE-440被接受,因此我们使用该格式,而不是pip当前的本机格式。
PEP 440说(强调我):
文件URL的格式为
file://<host>/<path>
。如果省略<host>
,则假定为localhost
,即使省略<host>
, 第三个斜杠必须仍然存在
我天真地解释为所有路径都必须是绝对路径。
相关 :