gpt4 book ai didi

Python setup.py,GitLab 上的私有(private)存储库作为基于提交 ID 的 dependency_links

转载 作者:行者123 更新时间:2023-12-01 06:48:58 33 4
gpt4 key购买 nike

我正在尝试安装私有(private)依赖项(Python 在 PyPI 上找不到的东西)。

我已添加到文件 setup.py这个(如此处解释: https://python-packaging.readthedocs.io/en/latest/dependencies.html#packages-not-on-pypi ):

dependency_links = [
'https://gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>'
]

在该官方文档中,他们并没有真正详细解释该 URL 的格式是什么,而是使用 <COMMIT_ID @之后听起来很合理(因为它是在各种其他语言和依赖管理工具中完成的)。

执行命令python setup.py install时然后我在日志/输出中看到:

Reading https://gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>

但是我没有看到该包实际安装,正如我从其他依赖项的日志/输出中看到的那样。

我知道我的 git 有一个有效的 GitLab 访问 token 设置命令,因为我已经运行了这个:

git config \
--global \
url."https://<ACCESS_TOKEN_NAME>:<ACCESS_TOKEN_VALUE>@gitlab.com".insteadOf \
"https://gitlab.com"

我在检查 git 时可以看到它配置为:

git config --list | grep gitlab
url.https://<ACCESS_TOKEN_NAME>:<ACCESS_TOKEN_VALUE>@gitlab.com.insteadof=https://gitlab.com
  • Python 使用 git运行时的命令 setup.py
  • 如何在 Python 中指定私有(private) GitLab 依赖项 setup.py文件? 它应该基于提交 ID 而不是包版本
  • 以上有什么问题吗?
  • 我还感觉使用 pip install 时运行方式可能会有所不同和定位 setup.py而不是运行 python setup.py install ,是否有一种独特的方法可以使这两种风格的 Python 安装一起工作?我问这个是因为在摆弄 dependency_links 时我正在尝试各种事情,例如 git+ssh而不是https以及其他变体,它们都无法安装该私有(private)存储库,并显示各种日志/输出,表明未找到该存储库。

编辑

我已经避免了dependency_links因为它似乎已被弃用,所以我使用了答案中提出的解决方案:

install_requires=[
...
"mylibraryname @ git+https://<ACCESS_TOKEN_NAME>:<ACCESS_TOKEN_VALUE>@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>",
...
],

但是执行 python setup.py install --record installed_files.txt 时,然后安装失败并显示以下消息:

Searching for mylibraryname@ git+https://<ACCESS_TOKEN_NAME>:<ACCESS_TOKEN_VALUE>@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>
Reading https://pypi.org/simple/mylibraryname/
Couldn't find index page for 'mylibraryname' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.org/simple/
No local packages or working download links found for mylibraryname@ git+https://<ACCESS_TOKEN_NAME>:<ACCESS_TOKEN_VALUE>@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>
error: Could not find suitable distribution for Requirement.parse('mylibraryname@ git+https://<ACCESS_TOKEN_NAME>:<ACCESS_TOKEN_VALUE>@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>')

所以我尝试使用pip install .假设有一个setup.py文件位于当前目录中,这有效:

Collecting mylibraryname@ git+https://<ACCESS_TOKEN_NAME>:<ACCESS_TOKEN_VALUE>@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID> from git+https://<ACCESS_TOKEN_NAME>:****@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID> (from <MY_LIBRARY_WITH_SETUP_PY>==<MY_LIBRARY_VERSION>)
Cloning https://<ACCESS_TOKEN_NAME>:****@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git (to revision <COMMIT_ID>) to /tmp/pip-install-bakazwe2/mylibraryname
Running command git clone -q https://<ACCESS_TOKEN_NAME>:sYzRKNsYAnv5GtS6zLZj@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git /tmp/pip-install-bakazwe2/mylibraryname

此解决方案似乎仅在使用 pip install . 时才有效。在包含 setup.py 的目录中。这不适用于 python setup.py install --record installed_files.txt .

最佳答案

https://python-packaging.readthedocs.io/是相当古老和过时的。其来源是last updated于 2016 年 12 月 29 日发布,其中大部分内容自 2012 年以来未更新。自那时以来,Python 打包环境发生了显着变化。新文档位于 https://packaging.python.org/

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

install_requires=[
'package_name @ git+https://gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>'
]

参见https://pip.readthedocs.io/en/stable/reference/pip_install/#requirement-specifiershttps://www.python.org/dev/peps/pep-0440/#direct-references

这需要 pip install 包括 pip install 。 并且不能与 python setup.py install 一起使用。

关于Python setup.py,GitLab 上的私有(private)存储库作为基于提交 ID 的 dependency_links,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59109081/

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