首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用setuptools从VCS repo子目录安装依赖项

使用setuptools从VCS repo子目录安装依赖项
EN

Stack Overflow用户
提问于 2020-05-21 08:45:20
回答 1查看 803关注 0票数 1

我正在尝试使用setuptools从VCS和子目录中安装一个依赖项。

我的setup.py看起来是这样的:

代码语言:javascript
复制
#!/usr/bin/env python3

from setuptools import setup

required = [
    "package"
]
dependency_links = [
    "git+ssh://git@host/repo.git@tag#subdirectory=subdir#egg=package-version"
]

setup(install_requires=required, dependency_links=dependency_links)

在virtualenv中运行python3 setup.py install,将得到以下错误:

Download error on git+ssh://git@host/repo.git@tag#subdirectory=subdir#egg=package-version: unknown url type: git+ssh -- Some packages may not be found!

为了调试起见,我使用了以下公共Github:

代码语言:javascript
复制
required = [
    "pycocotools"
]
dependency_links = [
    "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI#egg=pycocotools-2.0"
]

该示例建议使用这里作为类似问题的解决方案。我得到了相同的unknown url type错误(包最终是通过PyPI检索的,而不是通过VCS !)。

我试过的

代码语言:javascript
复制
git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI#egg=pycocotools-2.0
  • python3 setup.py installunknown url type: git+https -- Some packages may not be found!
  • pip3 installERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/tmp/pip-install-lwpbj7yv/pycocotools-2.0/PythonAPI#egg=pycocotools-2.0': '/tmp/pip-install-lwpbj7yv/pycocotools-2.0/PythonAPI#egg=pycocotools-2.0'
代码语言:javascript
复制
git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI&egg=pycocotools-2.0
  • python3 setup.py installunknown url type: git+https -- Some packages may not be found!
  • pip3 install:好的,但是WARNING: Generating metadata for package pycocotools-2.0 produced metadata for project name pycocotools. Fix your #egg=pycocotools-2.0 fragments.
代码语言:javascript
复制
git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI&egg=pycocotools
  • python3 setup.py installunknown url type: git+https -- Some packages may not be found!
  • pip3 install:OK

我也尝试为所有这些URL删除git+,但它是cannot detect archive format

我正在使用的版本

  • setuptools 46.4.0
  • python 3.6.9
  • pip 20.1.1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-21 09:35:57

dependency_links被宣布为过时,最后在pip 19.0中被宣布为删除。它的替代品是具有特殊语法的install_requires (自pip 19.1以来支持):

代码语言:javascript
复制
install_requires=[
    'package_name @ git+https://gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>'
]

安装/#要求-说明符https://www.python.org/dev/peps/pep-0440/#direct-references

这需要pip install,包括pip install .,而不适用于python setup.py install

就你而言:

代码语言:javascript
复制
install_requires=[
    "package @ git+ssh://git@host/repo.git@tag#subdirectory=subdir"
]

setup(install_requires=install_requires)

例如:

代码语言:javascript
复制
install_requires=[
    pycocotools @ git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI
]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61930615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档