我想找到一种使包装开发和使用尽可能自动的方法。
我的某些软件包依赖项是在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
的一些重要选项?首先我是不是误解了pip
和setuptools
的整个想法/过程?还是这个想法有缺陷?
我能提供的唯一解决方法是丑陋的,就像将依赖项手动引入setup.py
的{{1}}参数一样丑陋。也许这只是做事的正确方法?
有问题的依赖项不应发布,而需要从git安装。