gpt4 book ai didi

python - 在 pip 中为特定包指定 repo

转载 作者:行者123 更新时间:2023-12-04 09:23:56 26 4
gpt4 key购买 nike

我有一个私有(private)托管的包,它与在 PyPi 上找到的公共(public)包有名称冲突。可惜因为公版比我私包高,简单的pip install <package_x>命令查找公共(public)版本而不是我的私有(private)托管包。

有效:

PyPi (public) hosts package_x==1.5.0
PrivateRepo (private) hosts package_x==1.3.0

我要 pip install package_x安装私有(private)版本 1.3.0,而不需要我在 pip install 命令中指定版本或索引(纯粹通过配置文件。)

我正在尝试将我的 pip 配置设置为仅查看单个包的特定私有(private) repo,但私有(private) repo 和标准 https://pypi.python.org/simple/其他一切的 repo 。我尝试将私有(private) repo 设置为我的 index-url 并将 PyPi 设置为 extra-index-url,但这仍然会在两个存储库中搜索最新的包版本。

无论如何在我的 pip 配置中指定用于给定包的特定存储库?理想情况下是这样的:
[global]
force-index: https://privaterepo.net/simple
- package_x

最佳答案

pip
不幸的是 pip 不允许这样做。你最接近这样的事情是使用 --index-url requirements.txt 中的选项文件以使用不同的索引,但这是一个全局选项,这意味着它会覆盖已定义的任何其他此类选项,并且不能为每个包定义
最近还有其他可用的工具可以让我们对 python 依赖项及其来源进行精细控制
诗歌
第一个是Poetry ,这在 pyproject.toml 中为我们提供了此选项文件。
来自 docs

[[tool.poetry.source]]
name = "foo"
url = "https://foo.bar/simple/"
secondary = true

[tool.poetry.dependencies]
python = "^3.9"
requests = {version="*", source="foo"}
maya = {version="*", source="pypi"}
records = "*"
上面添加了一个名为 foo 的新包 repo到您的来源列表,但仍保留 pypi作为主要来源。该文档还解释了如何完全 ignore pypi 并使用您的私有(private)仓库作为软件包的唯一来源。
tool.poetry.dependencies部分,我们还指定了三个包以及它们应该从哪里安装:
  • requestsfoo 安装
  • mayapypi 安装
  • records默认从 pypi 安装

  • Install依赖项:
    poetry install --no-root
    您也可以使用 --source poetry add requests 的选项指定要使用的源
    Pipenv
    您可以使用 Pipenv来实现这一 pip 。
    来自 docs ,将以下内容添加到您的 Pipfile :
    [[source]]
    url = "https://pypi.org/simple"
    verify_ssl = true
    name = "pypi"

    [[source]]
    url = "http://pypi.home.kennethreitz.org/simple"
    verify_ssl = false
    name = "home"

    [dev-packages]

    [packages]
    requests = {version="*", index="home"}
    maya = {version="*", index="pypi"}
    records = "*"
    以上,让你安装 maya来自 pypi , 而 requests将从自定义/私有(private)包索引安装。

    关于python - 在 pip 中为特定包指定 repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61783194/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com