簡體   English   中英

pyproject.toml 將可編輯的 package 列為可編輯的 package 的依賴項

[英]pyproject.toml listing an editable package as a dependency for an editable package

使用 setuptools,是否可以將另一個可編輯的 package 列為可編輯的 package 的依賴項?

我正在嘗試開發一組軟件包以便在不同的生產服務中使用它們,其中一個軟件包 ( my_pkg_1 ) 取決於我的 package 集合的一個子集 ( my_pkg_2my_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM