You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python-Gitlab列出项目中的所有用户及其权限?

获取GitLab项目成员的正确方法

嗨,我来帮你搞定这个问题!你之前的思路方向是对的,但projects.users.list()没法正常工作的原因很明确——projects是项目列表对象,你需要遍历每个单个项目实例,再调用对应的成员接口。下面是具体的实现方案:

方法1:遍历群组下的所有项目,逐个获取成员

你已经能拿到群组的项目列表了,只需要对每个项目单独调用members.all()方法即可,逻辑和获取群组成员类似:

import gitlab

# 初始化GitLab连接
gl = gitlab.Gitlab("https://gitlab.etc.org/", private_token='private_token', ssl_verify=False)
group = gl.groups.get(xxx)  # 把xxx替换为你的群组ID或路径

# 获取群组下所有项目
projects = group.projects.list(all=True)

# 遍历每个项目,获取成员
for project in projects:
    # 注意:list()返回的是精简项目对象,需要用get()获取完整实例才能调用成员接口
    full_project = gl.projects.get(project.id)
    # 获取项目所有成员
    project_members = full_project.members.all(all=True)
    
    # 示例:过滤出项目的Owner(access_level=50)
    print(f"\n项目 {project.name} 的Owner成员:")
    for mem in project_members:
        if mem.access_level == 50:
            print(f"- {mem.name} ({mem.username})")

为什么之前的尝试没成功?

  • projects = group.projects.list(all=True)返回的是精简的项目实例,没有直接的users属性,必须通过gl.projects.get(project.id)获取完整项目对象,才能调用成员相关的API。
  • 关于“先获取用户再列项目”的方法:GitLab的API确实做了权限限制,普通用户无法查看其他用户的所有关联项目,只有管理员账户或者用户本人才能查看自己的项目列表,所以这个方法对非管理员不生效。

权限注意事项

确保你的private_token对应的账号满足以下条件:

  • 对目标项目拥有Reporter及以上权限(GitLab默认Reporter及以上角色可以查看项目成员)
  • 如果是群组级别的批量操作,账号需要在群组中有足够权限(比如Developer及以上),才能遍历所有项目并获取成员信息

内容的提问来源于stack exchange,提问作者llincolnatal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 06:22:31