使用 Python 访问带有 GitLab API 的项目时出现 GitlabParsingError
Posted
技术标签:
【中文标题】使用 Python 访问带有 GitLab API 的项目时出现 GitlabParsingError【英文标题】:GitlabParsingError when accessing a project with GitLab API with Python 【发布时间】:2021-12-20 01:51:41 【问题描述】:我尝试使用 python-gitlab
模块访问私有 GitLab 实例上的项目(请查看屏幕截图以获取版本号)。
我创建了一个对 GitLab 存储库的 Web UI 具有所有权限的访问令牌,并将此令牌复制到我的 Python 代码中:
import gitlab
gl = gitlab.Gitlab("https://MyGit.com/.../MyProject", "k1WMD-fE5nY5V-RWFb-G")
print(gl.projects.list())
Python在执行过程中抛出如下错误
Exception: GitlabParsingError (note: full exception trace is shown but execution is paused at: <module>)
Failed to parse the server message
During handling of the above exception, another exception occurred:
The above exception was the direct cause of the following exception:
File ".../app.py", line 226, in <module> (Current frame)
print(gl.projects.list())
【问题讨论】:
【参考方案1】:gitlab.Gitlab()
的第一个参数是 实例 的基本 URL,而不是项目的完整路径。例如https://gitlab.example.com
。您还应该使用关键字private_token
因此,除非您的实例位于相对路径中,否则您应该:
gl = gitlab.Gitlab('https://MyGit.com', private_token='your API key')
【讨论】:
所以不能通过使用项目特定的 URL 和令牌将 API 的视图限制到一个特定的项目吗?几秒钟前,我通过使用实例 URL 和一个特定项目的私有令牌进行了尝试。但是我可以读出很多ID[<Project id:116>, <Project id:114>, <Project id:112>, <Project id:111>, <Project id:109>, <Project id:108>, <Project id:105>, ...
您可以使用项目范围的令牌,但您将始终以与基本 URL 相同的方式初始化 gl
对象。 Project-scoped tokens 就像任何其他令牌一样,它们只是属于只能被授予对为其创建令牌的特定项目的写入权限的机器人用户。但该令牌也可能有权读取其他公共/内部项目。 @Kampi以上是关于使用 Python 访问带有 GitLab API 的项目时出现 GitlabParsingError的主要内容,如果未能解决你的问题,请参考以下文章
如何使用带有 ssh 的 java api 推送到 gitlab