如何使用git repos作为PyPi包的依赖项?

时间:2019-02-26 14:04:44

标签: python git pip pypi

我有一个要推送到PyPi的程序包,某些功能不是程序包,而是可安装的git存储库。我的require看起来像这样

imgLink: require('@/assets/images/icon-filter-up.png')

因此,我的requirements.txt具有以下内容:

sphinx_bootstrap_theme>=0.6.5
matplotlib>=2.2.0
numpy>=1.15.0
sphinx>=1.7.5
sphinx-argparse>=0.2.2
tensorboardX
tqdm>=4.24.0
Cython>=0.28.5

# git repos
git+git://github.com/themightyoarfish/svcca-gpu.git

但是运行setup.py实际上并不会安装git依赖项。我假设#!/usr/bin/env python from distutils.core import setup import setuptools import os with open('requirements.txt', mode='r') as f: requirements = f.read() required_pkgs, required_repos = requirements.split('# git repos') required_pkgs = required_pkgs.split() required_repos = required_repos.split() with open('README.md') as f: readme = f.read() setup(name=... ... packages=setuptools.find_packages('.', include=[...]), install_requires=required_pkgs, dependency_links=required_repos, zip_safe=False, # don't install egg, but source ) 实际上并未使用安装脚本。当我手动运行pip install <package>时,它可以工作。

修改

我还尝试了删除pip并仅将python setup.py install与存储库一起使用,但是从GitHub(包括上述文件的项目)安装我的存储库时,遇到了

dependency_links

在其他答案中有人建议可以放类似的东西

install_requires

进入 Complete output from command python setup.py egg_info: error in ikkuna setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'+git://g'" ,但失败

git+https://github.com/themightyoarfish/svcca-gpu.git#egg=svcca

问题:(如何)我可以列出git存储库作为pip包的依赖项吗?

2 个答案:

答案 0 :(得分:1)

在为Pip指定git依赖关系的50种左右方法中,唯一达到我预期目的的方法就是这种方法(PEP 508中的概述):

svcca @ git+ssh://git@github.com/themightyoarfish/svcca-gpu

这可以在install_requires中使用,它解决了dependency_links被pip忽略的问题。

一个有趣的副作用是,不能以这种依赖性将软件包上传到PyPi:

HTTPError: 400 Client Error: Invalid value for requires_dist. Error: Can't have direct dependency: 'svcca @ git+ssh://git@github.com/themightyoarfish/svcca-gpu' for url: https://upload.pypi.org/legacy/

答案 1 :(得分:0)

根据与How to state in requirements.txt a direct github source相关的下一篇文章。 您可以使用以下语法从git远程存储库添加 package

-e git://github.com/themightyoarfish/svcca-gpu.git

参考:  Install a project以可编辑模式(即setuptools“开发模式”)从本地项目路径或带有-e的VCS网址