我有一个要推送到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包的依赖项吗?
答案 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网址