Python 让pip使用git和github存储库
出于开发原因,我正在编写一个python应用程序,该应用程序依赖于另一个托管在github存储库中的应用程序(从不在pypi中) 让我们称之为:Python 让pip使用git和github存储库,python,django,git,github,pip,Python,Django,Git,Github,Pip,出于开发原因,我正在编写一个python应用程序,该应用程序依赖于另一个托管在github存储库中的应用程序(从不在pypi中) 让我们称之为: 正在编写的应用程序:AppA github中的应用程序:AppB 在应用程序A中,setup.py类似于: # coding=utf-8 import sys try: from setuptools import setup, find_packages except ImportError: import distribute_
- 正在编写的应用程序:
AppA
- github中的应用程序:
AppB
# coding=utf-8
import sys
try:
from setuptools import setup, find_packages
except ImportError:
import distribute_setup
distribute_setup.use_setuptools()
from setuptools import setup, find_packages
setup(
...
install_requires=[
# other requirements that install correctly
'app_b==0.1.1'
],
dependency_links=[
'git+https://github.com/user/app_b.git@0.1.1#egg=app_b-0.1.1'
]
)
现在,AppA
正在由Jenkins CI
通过每次推送构建,由于抛出下一个错误,我得到一个失败:
error: Download error for git+https://github.com/user/app_b.git@0.1.1: unknown url type: git+https
有趣的是,这只发生在詹金斯,它在我的电脑上工作得很好。我尝试了github提供的其他两个SSH URL,这些URL甚至都不考虑下载
现在,AppA包含在Jenkins正在构建的项目的需求文件中,因此通过pip install AppA
pip install AppB
手动安装依赖项不是一个选项,依赖项通过包含在requirements.txt
中自动安装
有没有办法让pip和git与github URL一起工作
任何帮助都将不胜感激:)
提前谢谢 来自-
尝试将
git+https
替换为git+git
问题不在于pip
,而在于setuptools
。负责setup()
调用的是setuptools
包(setuptools或distribute项目)
无论是setuptools
还是distribution
都不理解那种url,它们理解tarball/zip文件
尝试指向Github的下载url——通常是zip文件
您的dependency\u链接
条目可能如下所示:
dependency_links=[
'https://github.com/user/app_b/archive/0.1.1.zip#egg=app_b-0.1.1'
]
欲了解更多信息,请查看我在2019年也遇到过同样的问题,但原因不同。pip中不再支持依赖关系链接(使用pip>=20.0.0测试)。在我的例子中,我使用install_需求和定义直接引用解决了这个问题(请参阅pip手册直接引用)
。。。
安装要求=[
@吉特+@
]
我制作了一个名为的puplic示例存储库,以获取更多详细信息。很抱歉,此操作不起作用。它在本地工作,但不在Jenkins内部工作:(我正在想办法。无论如何,谢谢你,尽管有文档,还是应该支持
git+https
。至少根据在pip 0.8.2中一直出现的。我只是说出现了什么错误-未知url类型:git+https
。一定是pip的旧版本。你确定Jenkins使用pip吗?如果是的话es,这是一个支持此功能的版本吗?@Gerard你的Jenkins box使用哪一版本的pip?pip--version
应该会给你这些信息。即兴说来,它看起来像是0.8.2之前的版本,不支持https方案。除此之外,在我的情况下,如果r中有这样的包,就永远无法安装该包equires
的格式是package==version
,但它使用package
工作;也就是说,只有包名而没有版本如何添加私有存储库的分支作为依赖链接?这毕竟是使用git+[https | ssh]风格需求的主要原因之一
dependency_links=[
'https://github.com/user/app_b/archive/0.1.1.zip#egg=app_b-0.1.1'
]
...
install_requirements = [
<dependencyname> @ git+<url of dependency repository>@<branchname or tag>
]