Python [pygerrit2]HTTPError:401客户端错误:未授权url:

Python [pygerrit2]HTTPError:401客户端错误:未授权url:,python,gerrit,Python,Gerrit,我使用pygerrit2对我的gerrit服务器进行身份验证,遇到以下错误,用户名和密码正确,因为我使用相同的用户名和密码从gerrit UI手动登录,为什么会出现此错误以及如何修复它 from pygerrit2 import GerritRestAPI, HTTPBasicAuth auth = HTTPBasicAuth('username', 'password') print auth rest = GerritRestAPI(url='https://tech.company.co

我使用pygerrit2对我的gerrit服务器进行身份验证,遇到以下错误,用户名和密码正确,因为我使用相同的用户名和密码从gerrit UI手动登录,为什么会出现此错误以及如何修复它

from pygerrit2 import GerritRestAPI, HTTPBasicAuth

auth = HTTPBasicAuth('username', 'password')
print auth
rest = GerritRestAPI(url='https://tech.company.com', auth=auth)
changes = rest.get("/changes/?q=owner:self%20status:open")
错误:-

Traceback (most recent call last):
  File "get_related_changes.py", line 62, in <module>
    changes = rest.get("/changes/?q=owner:self%20status:open")
  File "/Library/Python/2.7/site-packages/pygerrit2/rest/__init__.py", line 156, in get
    decoded_response = _decode_response(response)
  File "/Library/Python/2.7/site-packages/pygerrit2/rest/__init__.py", line 51, in _decode_response
    response.raise_for_status()
  File "/Library/Python/2.7/site-packages/requests/models.py", line 939, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://tech.company.com/a/changes/?q=owner:self%20status:open
回溯(最近一次呼叫最后一次):
文件“get_related_changes.py”,第62行,在
changes=rest.get(“/changes/?q=owner:self%20status:open”)
get中第156行的文件“/Library/Python/2.7/site packages/pygerrit2/rest/_init__.py”
解码\u响应=\u解码\u响应(响应)
文件“/Library/Python/2.7/site packages/pygerrit2/rest/_init__.py”,第51行,在解码响应中
响应。针对_状态()提出_
文件“/Library/Python/2.7/site packages/requests/models.py”,第939行,处于raise_for_状态
引发HTTPError(http\u error\u msg,response=self)
requests.exceptions.HTTPError:401客户端错误:url未经授权:https://tech.company.com/a/changes/?q=owner:self%20status:open

首先,确保您的Gerrit版本使用了正确的身份验证类型。2.14之前的版本默认使用摘要验证;2.14及更高版本使用basic


其次,确保您使用的密码正确。它应该是您的用户设置的HTTP密码部分中的密码。

首先,确保您使用的是正确的Gerrit版本身份验证类型。2.14之前的版本默认使用摘要验证;2.14及更高版本使用basic


其次,确保您使用的密码正确。它应该是用户设置的HTTP密码部分中的密码。

可能会有所帮助,我通过从配置文件中读取用户名和密码解决了类似的问题

尝试:

从Python3.8安装Python2.6+:
pip安装configparser
。 有关更多详细信息,请参阅great

从pygerrit2导入GerritRestAPI,HTTPBasicAuth
导入配置分析器
config=configparser.RawConfigParser()
config.read('config.ini')
my_user=config.get('my_app','USERNAME')
my_pass=config.get('my_app','PASSWORD')
auth=HTTPBasicAuth(我的用户,我的通行证)
打印验证
rest=GerritRestAPI(url=)https://tech.company.com,auth=auth)
changes=rest.get(“/changes/?q=owner:self%20status:open”)

可能会有帮助,我通过从配置文件中读取用户名和密码解决了类似的问题

尝试:

从Python3.8安装Python2.6+:
pip安装configparser
。 有关更多详细信息,请参阅great

从pygerrit2导入GerritRestAPI,HTTPBasicAuth
导入配置分析器
config=configparser.RawConfigParser()
config.read('config.ini')
my_user=config.get('my_app','USERNAME')
my_pass=config.get('my_app','PASSWORD')
auth=HTTPBasicAuth(我的用户,我的通行证)
打印验证
rest=GerritRestAPI(url=)https://tech.company.com,auth=auth)
changes=rest.get(“/changes/?q=owner:self%20status:open”)

您的gerrit是否配置为使用basic auth?我认为较旧版本的gerrit默认为HTTP Digest,而当前版本默认为HTTP basic,但有多种不同的选项来选择要使用的密码,默认情况下,它与您在GUI中使用的密码不同,它是用于git+https的随机生成的一个(您可以从用户设置页面的GUI中看到)。@abarnert-如何知道我的gerrit是否配置为使用基本身份验证?@user3508811如果gerrit版本早于2.14,则它很可能使用摘要身份验证。较新版本使用basic。您的gerrit是否配置为使用basic auth?我相信较旧版本的gerrit仅默认为HTTP摘要,而当前版本默认为HTTP basic,但有多种不同的选项来选择要使用的密码,默认情况下,它与您在GUI中使用的密码不同,它是用于git+https的随机生成的一个(您可以从用户设置页面的GUI中看到)。@abarnert-如何知道我的gerrit是否配置为使用基本身份验证?@user3508811如果gerrit版本早于2.14,则它很可能使用摘要身份验证。更高版本使用basic。
# config.ini

[my_app]
USERNAME = enter_username
PASSWORD = enter_password