使用 setuptools 从私有 Gitlab 包存储库安装 Python 包

2024-07-04

我为我的雇主创建了一个私人套餐。由于我被禁止将其上传到 PyPI(它是专有的),因此我将其上传到我们私人 Gitlab 中心上的项目的包索引中。我可以手动安装它:

$ pip install my-package --extra-index-url https://__token__:my-token-xx[email protected] /cdn-cgi/l/email-protection/api/v4/projects/123456/packages/pypi/simple

现在我也想要设置工具 https://pypi.org/project/setuptools/当在 setup() 的 install_requires 参数中列出时能够找到它。我试过:

setup(
  install_requires=[
    f"my-package @ https://__token__:{API_TOKEN}@gitlab.company-domain.com/api/v4/projects/123456/packages/pypi/simple",
    ...
    ],
  ...

pip install -e .结果是

ERROR: HTTP error 404 while getting https://__token__:****@gitlab.company-domain.com/api/v4/projects/123456/packages/pypi/simple

这不同于

my-package @ git+https://user:[email protected] /cdn-cgi/l/email-protection/..../my-package.git

这可行,但我希望能够将其作为预构建的轮子下载。

我不确定这是 setuptools 问题还是 Gitlab 问题。 404 响应告诉我,这可能是 gitlab 问题,但与 pip install CLI 命令一起使用时,相同的 URI 可以完美运行。

这个问题类似于将 gitlab 包注册表中的 python 包和其他外部索引直接包含到 setup.py 依赖项中 https://stackoverflow.com/q/65581442/270511,但我认为没有得到足够的回应。我发布了同样的问题讨论.python.org https://discuss.python.org/t/dependency-notation-including-the-index-url/5659/63?u=lsiden,但这个讨论已经很老了,我想我可能会在这里得到更快的回复。

我还发现这个回应 https://stackoverflow.com/a/68900614/270511类似的问题,这并不令人鼓舞。推荐Poetry或者Pipenv。我已经尝试了这两种方法,发现在解决依赖关系时,每种方法都非常慢,所以我又求助于 setuptools。


仅包含包名称install_requires。然后,在 pip 配置中配置(额外)索引 URL(环境变量或pip.conf/.pypirc或 CLI 参数)。然后使用pip install正常情况下会起作用。

例如:

In setup.py:

    # ...
    install_requires=[
        'my-package-name',
        # ...
    ],
    # ...

然后安装命令(假设环境变量API_TOKEN存在):

GITLAB_INDEX="https://__token__:${API_TOKEN}@gitlab.company-domain.com/api/v4/projects/123456/packages/pypi/simple"
pip install --extra-index-url "${GITLAB_INDEX}" -e .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 setuptools 从私有 Gitlab 包存储库安装 Python 包 的相关文章

随机推荐

  • React-native 应用程序在真实的 Android 设备上崩溃

    我正在使用react native 目前开始使用redux并创建了一个应用程序 但是当我在模拟器上运行该应用程序时 它工作正常 然后我通过 USB 将我的手机与 android 6 连接 它也可以工作 但在 Android 8 的其他设备中
  • 如何通过参数包传递引用?

    我有以下代码 include
  • iOS 版本的 Fragment

    谁能告诉我在 Xcode iPhone 中执行以下操作的最佳方法是什么 我有一个主导航屏幕 上面有一些按钮 当用户单击任何按钮时 他们将进入带有更多选项按钮的子导航屏幕 在这里 他们单击任意按钮 就会看到选项列表 单击任何列表选项都会向用户
  • 如何在R函数中使用switch语句?

    我想在 R 中的函数中使用以下语句switch 根据函数参数的值触发不同的计算 例如 在 Matlab 中 您可以通过编写来做到这一点 switch AA case 1 case 2 case 3 end 我找到了这个帖子 switch 语
  • Node Sass 缺少多个节点版本的绑定

    我正在使用 nvm 在节点版本之间切换 我的package json scripts dev rm rf public assets hot update js NODE ENV development webpack env dev pr
  • 在 JavaScript 中将数字转换为字符串,而不从数字中添加尾随零

    我尝试使用 toString 在 JavaScript 中将数字转换为字符串 但它会截断数字中无关紧要的零 举些例子 var n1 250 00 var n2 599 0 var n3 056 0 n1 toString yields 25
  • Laravel 使用 mysql 索引

    我有这个糟糕的代码 抱歉 它使用了太多 MySQL 查询 抱歉它太长了 return view dashboard homepage array DriversNumberApproved gt App Models Drivers whe
  • GWT UiBinder 不加载样式表

    我想使用 UiBinder 制作一个 GWT 小部件 所以我做了 UserPanel ui xml 像这样
  • IF 语句中间的 GO 命令

    我正在寻找有关创建表的信息 仅当它们在当前数据库中不存在时 以便能够在可能或可能没有它们的不同数据库中创建它 并发现这两个有用的主题 SQL Server 检查表是否存在 https stackoverflow com questions
  • 无法在 Debian lenny 上安装 python 模块“pycrypto”

    我尝试通过下载源代码并执行以下命令来安装 pycrypto 模块python setup py install 然后出现错误 running install running build running build py running bu
  • Rails 3 使用 NOT NULL 在 .where 条件之后排序

    我有一个显示最快用户的排名 users User find sort a b b finished at lt gt a created at 现在我必须添加一些代码以防止由于finished at beeing而出现错误nil直到用户完成
  • Android 嵌套片段问题“java.lang.IllegalStateException:活动已被销毁”

    您可能知道 Android 支持嵌套片段 也是通过 API 级别 17 的支持库实现的 所以基本上我正在尝试将嵌套片段添加到 ViewPager 的片段之一中 并熟悉这一新的好功能 在第一次应用程序启动时 一切都按预期工作 即我可以添加子片
  • Oracle ProC INSERT INTO VALUES ( (选择 ...) )

    在 Oracle 10g 上运行 Pro C 我希望在插入语句值子句中执行子查询 该 sql 查询完全有效 并且在 TOAD 中运行没有任何问题 但 Pro C 无法解析该查询 EXEC SQL INSERT INTO TARGET ATT
  • 获取矩阵中总和值最大的列

    比方说 import numpy as np f np matrix 1 2 3 4 5 6 是否可以从矩阵中检索具有最大列和的列数 如何 你可以写 gt gt gt f sum axis 0 argmax 1 所以专栏1求和到最大的值 为
  • 如何将默认的 binutils 转换为 binutils-2.26?

    当我命令 make 时 我收到如下错误 usr bin ld lib liblmi a LMInterface o unrecognized relocation 0x2a in section text 这个错误是由早期版本的 binut
  • 在 Swift 中捕获 [weak self] 的 Realm 通知

    在 Swift 的 Realm 文档中 有关以下内容的部分通知 https realm io docs swift latest notifications有这个示例代码 class ViewController UITableViewCo
  • 如何解决 CMake 错误“无法找到 MPI”

    我正在尝试在 48小时 全新的 ubuntu 20 04 3 安装上运行 CMakeLists txt 文件 我在运行时不断收到以下错误cmake Could NOT find MPI CXX missing MPI CXX WORKS C
  • 带有主机工具链的 buildroot 环境

    为了运行测试用例等 我想为主机系统编译我们的 buildroot 环境的一部分 usr bin gcc 等 我尝试在 usr 中指定 external toolchain 但失败了 有没有人设法做这样的事情 buildroot 手册说这是不
  • 同时在不同层中使用多个 CAKeyframeAnimation

    现在有人知道如何使用 CAKeyframeAnimation 同时对多个图层进行动画处理吗 每个层都有自己的 CAKeyframeAnimation 对象 看看下面的代码 我有一个接收对象 创建 CAKeyframeAnimation 并将
  • 使用 setuptools 从私有 Gitlab 包存储库安装 Python 包

    我为我的雇主创建了一个私人套餐 由于我被禁止将其上传到 PyPI 它是专有的 因此我将其上传到我们私人 Gitlab 中心上的项目的包索引中 我可以手动安装它 pip install my package extra index url h