当我对git repos有依赖性时,如何使用setuptools和pip自动进行依赖性管理?

时间:2019-03-22 10:39:12

标签: python git pip setuptools

我想找到一种使包装开发和使用尽可能自动的方法。

我的某些软件包依赖项是在git存储库中找到的自行开发的软件包。

当我做pip freeze时,它会列出这些git依赖项,如下所示:

pandas==0.24.1
...
-e git+https://my/repo.git@ffffffffffffffffffffffffffffffffffffffff#egg=mydependency

由于我要避免复制粘贴,因此我执行以下操作以在setup.py中包含依赖项:

with open("requirements.txt", "r") as f:
    install_requires = f.read().splitlines()

setuptools.setup(
    ...
    install_requires=install_requires,
)

(我通过requirements.txt产生了pip freeze > requirements.txt

然后,当我尝试安装具有上述setup.py的软件包时,出现此错误:

$ pip install .
Processing /path/to/pkg
    Complete output from command python setup.py egg_info:
    error in pkg setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'-e git+h'"

我在做什么错?创建pip freeze时是否缺少requirements.txt的一些重要选项?首先我是不是误解了pipsetuptools的整个想法/过程?还是这个想法有缺陷?

我能提供的唯一解决方法是丑陋的,就像将依赖项手动引入setup.py的{​​{1}}参数一样丑陋。也许这只是做事的正确方法?

有问题的依赖项不应发布,而需要从git安装。

0 个答案:

没有答案