出于开发原因,我正在编写一个依赖于另一个托管在github存储库中的python应用程序(在pypi中从未使用过)。
让他们叫:
AppA
AppB
在App 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/[email protected]#egg=app_b-0.1.1'
]
)
现在AppA
正在通过每次推入构建Jenkins CI
,由于抛出下一个错误,我失败了:
error: Download error for git+https://github.com/user/[email protected]: unknown url type: git+https
有趣的是,这仅发生在詹金斯身上,在我的计算机上可以正常工作。我尝试了github提供的其他两个SSH URL,甚至都不考虑下载。
现在,AppA包含在同样由詹金斯(Jenkins)建立的项目的需求文件中,因此无法通过pip install AppA
pip install AppB
手动安装依赖项,而是通过包含在requirements.txt
中来自动安装依赖项。
有没有办法使ipp和git与github url一起工作?
任何帮助将不胜感激:)
提前感谢!
问题不是pip
,而是setuptools
。负责setup()
调用的是setuptools
程序包(setuptools或分发项目)。
setuptools
或distribute
都不了解这种URL,他们了解tarball / zip文件。
尝试指向Github的下载网址-通常是一个zip文件。
您的dependency_links
条目可能看起来像:
dependency_links=[
'https://github.com/user/app_b/archive/0.1.1.zip#egg=app_b-0.1.1'
]
有关更多信息,请查看http://peak.telecommunity.com/DevCenter/setuptools#dependencies-that-aren-t-in-pypi
pip currently supports cloning over git, git+http and git+ssh:
git+git://git.myproject.org/MyProject#egg=MyProject
git+http://git.myproject.org/MyProject#egg=MyProject
git+ssh://git.myproject.org/MyProject#egg=MyProject
尝试用git+https
替换git+git
。
我在2019年遇到相同的问题,但由于不同的原因。 pip不再支持dependency_links(已通过pip> = 20.0.0测试)。就我而言,我使用install_requirements并定义了直接引用来解决此问题(请参阅pip手册直接引用)。
...
install_requirements = [
<dependencyname> @ git+<url of dependency repository>@<branchname or tag>
]
我在https://gitlab.rhrk.uni-kl.de/scheliga/thepackage处创建了一个名为thepackage的公共示例存储库,以了解更多详细信息。