Python 让pip使用git和github存储库

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_

出于开发原因,我正在编写一个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_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>
]