![](/img/trans.png)
[英]"requires" (pyproject.toml) with a local package in editable mode
[英]pyproject.toml listing an editable package as a dependency for an editable package
使用 setuptools,是否可以將另一個可編輯的 package 列為可編輯的 package 的依賴項?
我正在嘗試開發一組軟件包以便在不同的生產服務中使用它們,其中一個軟件包 ( my_pkg_1
) 取決於我的 package 集合的一個子集 ( my_pkg_2
、 my_pkg_x
……),到目前為止,我我們已經設法將這個pyproject.toml
放在一起:
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "my_pkg_1"
version = "0.0.1"
dependencies = [
"my_pkg_2 @ file:///somewhere/in/mysystem/my_pkg_2"
]
當/用於在可編輯模式下安裝my_pkg_1
時它確實有效,並且它確實安裝my_pkg_2
但不是在可編輯模式下。 這是我在pip list
看到的:
Package Version Editable project location
--------------- ------- -------------------------
my_pkg_2 0.0.1
my_pkg_1 0.0.1 /somewhere/in/mysystem/my_pkg_1
我正在嘗試做的事情有可能嗎? 如果是這樣,如何?
在安裝 my_pkg_1 之前,您可以在可編輯模式下顯式安裝 my_pkg_2:
pip install --editable /somewhere/in/mysystem/my_pkg_2
不幸的是,通過安裝main package無法在可編輯模式下自動安裝依賴項(以及依賴項的依賴項)。我很好奇為什么沒有實現。
或者,您可以在從主 package 運行代碼之前將 package 路徑添加到環境變量PYTHONPATH
。這樣,您就可以從其他包中導入 python 模塊,而無需安裝它們。
這不能在pyproject.toml
中完成。 至少不是你想要的方式和標准方式。
如果我是你,我會為自己寫一個requirements.txt
文件(顯然你也可以給它一個不同的名字):
# install the current project as editable
--editable .
# install `my_pk_2` as editable
--editable /somewhere/in/mysystem/my_pkg_2
你可以像這樣使用它:
path/to/venv/bin/python -m pip install --requirement 'path/to/requirements.txt'
當您想在同一環境中同時處理(編輯)兩個軟件時。
或者,您可以使用“開發工作流工具”(例如 PDM、Hatch、Poetry 等),也許其中之一更符合您的期望。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.