从自定义索引 setup.py 安装

Posted

技术标签:

【中文标题】从自定义索引 setup.py 安装【英文标题】:Installing from custom index setup.py 【发布时间】:2019-03-15 01:44:40 【问题描述】:

我是一个包的包维护者,该包依赖于我们自己的 pip 存储库中托管的包。

我希望在执行pip install mypackage 时也安装这些软件包。

setup(
  name='mypackage',
  version='1.1.2',
  description='My awesome package',
  dependency_links=[
    'http://www.myrepo.se/packages/mydep1/',
    'http://www.myrepo.se/packages/mydep2/'
  ]
  install_requires=[
    'mydep1==1.0.0',
    'mydep2==5.6.7'
  ]
)

repo 中的文件夹结构如下:

packages/
  mydep1/
    mydep1-1.0.0.tar.gz
  mydep2/
    mydep2-5.5.1.tar.gz
    mydep2-5.6.7.tar.gz

全部根据这个问题Using an extra python package index url with setup.py接受的答案

但是,这不起作用。我得到了错误:

Collecting mydep1 (from mypackage==1.1.2)
  Could not find a version that satisfies the requirement mydep1 (from mypackage==1.1.2) (from versions: )
No matching distribution found for mydep1 (from mypackage==1.1.2)

当我在我的 requirements.txt 中添加了一个额外的索引 url 之后,我必须将这个 url 添加为受信任的主机。这有关系吗?我也在使用 python 3.5.3

编辑: 我从 pip 激活了详细输出,它甚至没有尝试从我的 repo 中找到包。

1 location(s) to search for versions of mydep1:
  * https://pypi.python.org/simple/mydep1/
  Getting page https://pypi.python.org/simple/mydep1/
  ...

【问题讨论】:

pip ignores dependency_links in setup.py的可能重复 是的。这是重复的,因为解决方案是相同的。它也不是重复的,因为我试图从自定义 pypi 存储库安装,而他试图从 GitHub 安装。另外,即使我搜索过,直到我发布我的问题后才找到它:) 【参考方案1】:

似乎pip 没有处理依赖链接,除非你明确告诉它(不幸的是,这意味着 mypackage 的所有消费者都必须知道这样做)。

pip install --process-dependency-links mypackage

由于mypackage 也由同一存储库托管,这意味着消费者requirements.txt 必须看起来像

--trusted-host http://www.myrepo.se/
--extra-index-url http://www.myrepo.se/packages
--process-dependency-links

mypackage==1.1.2

【讨论】:

--process-dependency-links 选项在 pip v 19.0.3 中不再支持。我确实有此处所述的问题,但如果没有此选项,我不确定如何继续? @Gabriel,使用here 中描述的 PEP 508 语法让pip 19.0 与 URL 很好地配合使用:install_requires = ['package @ https://url/to/package.tar#egg=package']。请记住,PyPI will retire this functionality somewhere the future.

以上是关于从自定义索引 setup.py 安装的主要内容,如果未能解决你的问题,请参考以下文章

应用程序崩溃。当我从自定义表格单元格下载视频的第二个索引时

教程Python自定义库的封装

使用微调器从自定义列表视图中删除了错误的行

从自定义文件系统目录透明地离线安装 npm 包

text 从自定义Github repo安装Heroku依赖项

如何在Docker文件中从自定义文件通道安装conda包?