Python setup.py,在GitLab上使用私有存储库作为基于提交ID的依赖项链接
我正在尝试安装一个私有依赖项(不是Python在PyPI上可以找到的东西) 我已将以下内容添加到文件Python setup.py,在GitLab上使用私有存储库作为基于提交ID的依赖项链接,python,git,dependencies,gitlab,setup.py,Python,Git,Dependencies,Gitlab,Setup.py,我正在尝试安装一个私有依赖项(不是Python在PyPI上可以找到的东西) 我已将以下内容添加到文件setup.py中(如下所述): dependency\u链接=[ 'https://gitlab.com//.git@' ] 在官方文档中,他们没有详细解释URL的格式,但是使用是非常陈旧和过时的。其来源于2016年12月29日,其中大部分自2012年以来未更新。自那时以来,Python打包环境发生了重大变化。新文档位于 dependency\u链接被宣布为过时链接,并最终在pip19.0中发
setup.py
中(如下所述):
dependency\u链接=[
'https://gitlab.com//.git@'
]
在官方文档中,他们没有详细解释URL的格式,但是使用是非常陈旧和过时的。其来源于2016年12月29日,其中大部分自2012年以来未更新。自那时以来,Python打包环境发生了重大变化。新文档位于
dependency\u链接
被宣布为过时链接,并最终在pip
19.0中发布。它的替代品是install\u需要具有特殊语法的
(自pip
19.1起支持):
install\u需要=[
'package_name@git+https://gitlab.com//.git@'
]
看到和
这需要pip安装
包括pip安装。
并且不适用于python setup.py安装
我已经阅读了多个答案,但只有这一个对我有效(使用pip 20.2.3
和功能):
pip3安装--额外索引urlhttps://__token__:my_personal_token@gitlab.com/api/v4/projects/347/packages/pypi/simple。
我的setup.py
看起来像:
从设置工具导入设置
安装程序(name='whatever\u production\u scripts',
version='0.0.1',
description='which production scripts',
url='1〕https://gitlab.com/user/whatever',
“我自己”,
作者(电邮地址)user@whatever.com',
许可证=“保留所有权利”,
剧本=[
“无论什么制作脚本/制作/失眠.py”,
'无论生产脚本/production/rdsmainance.py是什么',
'无论生产脚本/production/changeinstancetype.py是什么',
],
包裹=[
“无论生产脚本是什么”,
“无论是什么制作脚本制作”,
],
分类器=[
“发展状况:3-阿尔法”,
“目标受众::系统管理员”,
“操作系统::POSIX::Linux”,
“主题:互联网”,
“主题::系统::系统管理”,
“编程语言::Python::3::仅限”
],
安装所需的=[
“privatepackage1>=0.1”,
“publicpackage1>=7”,
“publicpackage2>=2”
],
zip_safe=False)
谢谢,这只在使用pip安装时起作用。
,我想接受这个答案。请您提一下pip安装。
和python setup.py安装之间的注意事项--record installed_files.txt
,也许是第二次安装失败的原因。由于某种原因,当我将提交ID更新为一个新值时,pip
表示需求已经满足
。我必须首先手动pip uninstall-y package\u name
以确保pip
然后提取具有预期提交ID的版本。如果我要指定主分支提交,该怎么办?@LukAron请更具体一些-是否要指定master
分支(每次pip安装
使用不同的提交)或仅一次提交(与分支无关)?@phd运行pip安装
时主分支指向的提交
Reading https://gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>
install_requires=[
...
"mylibraryname @ git+https://<ACCESS_TOKEN_NAME>:<ACCESS_TOKEN_VALUE>@gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>",
...
],
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>')
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
install_requires=[
'package_name @ git+https://gitlab.com/<PRIVATE_ORG>/<PRIVATE_REPO>.git@<COMMIT_ID>'
]