Python3.8调用Jira API获取字段遇AttributeError及认证问题
解决Jira Python API初始化报错及认证问题
看起来你遇到了Jira Python API的双重问题:初始化时的版本解析错误,以及认证权限问题。我来帮你一步步排查解决:
问题根源分析
- 服务器版本解析错误:你使用的jira库版本在初始化时会尝试获取Jira服务器的版本信息(
serverInfo接口),但你的Jira服务器返回的响应中没有versionNumbers字段,甚至返回了布尔值(从报错'bool' object has no attribute 'error'可以看出),导致库解析失败抛出异常。 - 认证权限问题:浏览器能正常访问工单API是因为浏览器保存了会话Cookie,但
curl和Python库使用的Basic Auth被服务器拒绝,说明你的认证方式或账号权限有问题。
解决方案
1. 快速跳过版本检查,解决初始化报错
在初始化JIRA对象时添加server_info=False参数,让库跳过服务器版本信息的获取,直接完成初始化:
from jira import JIRA def main(): options = {'server':"https://jira.test.com/" } # 添加server_info=False跳过版本检查 jira = JIRA(options, basic_auth=('username', 'password'), server_info=False) issue = jira.issue('XXXX-10085') print(issue.fields.project.key) print(issue.fields.issuetype.name) print(issue.fields.reporter.displayName) print(issue.fields.summary) print(issue.fields.project.id) if __name__== "__main__" : main()
2. 修复认证问题
针对curl返回AUTHENTICATION_DENIED的情况,你需要做以下检查:
- 如果启用了双因素认证(2FA):不能直接使用账号密码进行Basic Auth,需要去你的Jira个人资料中生成API Token,然后用
basic_auth=('你的用户名', 'API Token')替代原来的密码。 - 检查账号权限:确认你的账号拥有访问Jira REST API的权限,比如是否属于
Jira Users组,或者是否被管理员授予了API访问权限。 - 测试认证有效性:先用
curl命令验证认证信息是否正确:
如果返回正常的JSON响应,说明认证没问题;如果还是返回拒绝,联系Jira管理员排查账号权限。curl -u 你的用户名:密码/API_Token https://jira.test.com/rest/api/2/serverInfo
3. 升级jira库(可选)
你看到的WARNING:root:Bug https://jira.atlassian.com/browse/JRA-59676 trying again...是旧版本jira库的已知bug,升级到最新版本的jira库可以解决这个警告,同时可能兼容更多Jira服务器版本:
pip install --upgrade jira
内容的提问来源于stack exchange,提问作者kamal
相关产品推荐
相关产品推荐

