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才能使其工作).
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/有类似的问题
| 归档时间: |
|
| 查看次数: |
2888 次 |
| 最近记录: |