通过pip安装传递bitbucket依赖项

mar*_*ers 6 python dependencies pip setuptools

我正在尝试解决的情况是从bitbucket上的私有存储库安装一个包,它有自己对bitbucket中另一个私有存储库的依赖.

我用它来启动安装:

pip install -e git+https://bitbucket.org/myuser/project-one.git/master#egg=django_one 
Run Code Online (Sandbox Code Playgroud)

然后尝试从setup.py下载它的依赖项,如下所示:

install_requires = ['project-two',],
dependency_links = ['git+https://bitbucket.org/myuser/project-two.git/master#egg=project_two'],
Run Code Online (Sandbox Code Playgroud)

这失败了,pip日志看起来像:

Downloading/unpacking project-two (from project-one)

  Getting page https://pypi.python.org/simple/project-two/
  Could not fetch URL https://pypi.python.org/simple/project-two/: HTTP Error 404: Not Found (project-two does not have any releases)
  Will skip URL https://pypi.python.org/simple/project-two/ when looking for download links for project-two (from project-one)
  Getting page https://pypi.python.org/simple/
  URLs to search for versions for project-two (from project-one):
  * https://pypi.python.org/simple/project-two/
  * git+https://bitbucket.org/myuser/project-two.git/master#egg=project-two
  Getting page https://pypi.python.org/simple/project-two/
  Cannot look at git URL git+https://bitbucket.org/myuser/project-two.git/master#egg=project-two
  Could not fetch URL https://pypi.python.org/simple/project-two/: HTTP Error 404: Not Found (project-two does not have any releases)
  Will skip URL https://pypi.python.org/simple/project-two/ when looking for download links for project-two (from project-one)
  Skipping link git+https://bitbucket.org/myuser/project-two.git/master#egg=project-two; wrong project name (not project-two)
  Could not find any downloads that satisfy the requirement project-two (from project-one)
Run Code Online (Sandbox Code Playgroud)

关于这个设置的奇怪之处在于,如果我将项目一个克隆并运行

python setup install
Run Code Online (Sandbox Code Playgroud)

从那里,project-two从bitbucket获取并安装到我的virtualenv中.我的理解是pip正在使用设置工具,所以我的假设是该测试的成功验证了我的方法.

任何建议赞赏.

跟进:

所以接受的答案是正确的 - 但我的问题是作为私人仓库(https + http auth-basic)的额外复杂性.使用语法

dependency_links=["http://user:password@bitbucket.org/myuser/..."]
Run Code Online (Sandbox Code Playgroud)

仍然导致401.运行shell并使用pip.download.py运行urlopen演示了潜在的问题(即pip需要额外的设置urllib2才能使其工作).

这里提到这个问题,但我无法解决这个问题.

Hug*_*res 3

pip创建了 VCS 安装的想法,因此您可以使用git+https://path/to/repo.git,但setuptools不明白这一点。

当你创建一个setup.py文件时,你只是使用setuptools(不pip涉及),并且setuptools不理解那种URL。

您可以使用dependency_linkstarball 或 zip 文件,但不能使用 git 存储库。

将您的替换depencency_links为:

dependency_links=["https://bitbucket.org/myuser/project-two/get/master.zip#egg=project-two"]
Run Code Online (Sandbox Code Playgroud)

并检查它是否有效。

/sf/answers/1044968851/有类似的问题


参考: