在python中使用git子模块

2024-09-27 22:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这个网站上读了很多关于git子模块使用的博客文章和问题,但仍然不知道如何更好地将它们与python结合使用

我的意思是,如果我有这样一个包,管理依赖关系的更简单方法是什么:

├── mypkg
│   └── __init__.py
├── setup.py
└── submodules
    ├── subm1
    └── subm2

那么,如果我需要使用“mypkg”作为“顶级pkg”的子模块,该怎么办

├── setup.py
├── submodules
│   └── mypkg
└── top_level_package
    └── __init__.py

,我希望运行pip install .,并正确解析所有问题(以正确的顺序将每个子模块安装到VENV)

我所尝试的:

  • 使用在子流程中运行的“pip”安装每个子模块。但这似乎是一种很难管理的黑客方式(Unexpected installation of GIT submodule
  • 将“install\u requires”与“setuptools.find\u packages()”一起使用,但不成功
  • 对每个子模块都使用requirements.txt文件,但我找不到一种方法来自动化它,以便“pip”能够自动安装所有子模块的所有需求

理想情况下,我设想每个子模块都有一个单独的setup.py文件,带有install_requires=['submodules/subm1', 'submodules/submn'],但setuptools不支持它


Tags: 模块installpip文件方法pygitinit
2条回答

感谢Gijs Wobbensinoroc我想出了适合我的案例的解决方案:

install_requires=['subm1 @ file://localhost/<CURENT_DIR>/path/to/subm1']

我不是说这是不可能的,而是非常困难和棘手。更安全的方法是将每个子模块转换为可安装的Python模块(使用它自己的setup.py),并从Git安装子模块

此链接介绍如何从Git安装带有setup.py:https://stackoverflow.com/a/32689886/2952185的软件包

相关问题 更多 >

    热门问题