我想将我的Python源代码组织到一个单一存储库中,具有以下基本结构:
projectrootdir
- libraryone
- pyproject.toml
- README
- src/orgname/libraryone
- __init__.py
- somemodule.py
- webapi
- pyproject.toml
- README
- src/organame/webapi
- __init__.py
- apimodule.py
在
apimodule.py
文件中,我想像这样使用来自
libraryone
的模块:
from orgname.libraryone import somemodule
到目前为止,我可以'不要这样做。相反,以下内容有效:
from libraryone.src.orgname.libraryone import somemodule
在
pyproject.toml
文件
webapi
中,我添加了以下内容:
[tool.poetry.dependencies]
libraryone = {path = "../libraryone"}
如何组织和配置它以实现我想要的?我需要直接在
projectroodir
下进行配置吗?
遇到的问题是 Poetry 默认情况下不会将的本地软件包安装为可编辑的。为了解决这个问题,需要在
webapi
的
pyproject.toml
中进行以下更改:
-
使用
develop = true
将libraryone
依赖项标记为可编辑:
[tool.poetry.dependencies]
libraryone = { path = "../libraryone", develop = true }
-
在
libraryone
的pyproject.toml
中定义包名称:
[tool.poetry]
name = "orgname.libraryone"
-
这确保 Poetry 正确识别和安装
libraryone
包,并使其可通过from orgname.libraryone import somemodule
访问。 -
(可选)在
projectrootdir
创建一个pyproject.toml
文件来管理整个 monorepo:
[tool.poetry]
name = "my-monorepo"
version = "0.1.0"
[tool.poetry.dependencies]
# ... 添加任何共享依赖项
[tool.poetry.scripts]
# ... 添加任何 monorepo 级别的脚本
[tool.poetry.extras]
# ... 添加任何可选依赖项组
-
在
projectrootdir
运行poetry install
安装所有依赖项。
完成这些步骤后,应该能够在
webapi
项目中使用
from orgname.libraryone import somemodule
导入和使用
libraryone
中的模块。
总结:
-
通过将
develop = true
添加到webapi
的依赖项中,指示 Poetry 将libraryone
安装为可编辑的软件包。 -
在
libraryone
的pyproject.toml
中定义包名称可确保 Poetry 正确识别和安装它。 -
可选地在根目录中创建一个
pyproject.toml
文件,以便更轻松地管理整个 monorepo。
希望这可以帮助解决问题! 如果有任何其他问题,请告诉我。
标签:python,package,namespaces,monorepo,python-poetry From: 78798370