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

Django项目中bcrypt系列库引发createsuperuser命令报错求助

Django createsuperuser 报AttributeError: 'bcrypt._bcrypt' has no attribute 'encode_base64' 解决办法

问题根源

你同时安装了多个bcrypt相关包(bcrypt、py-bcrypt、django-bcrypt),版本之间存在冲突。其中django-bcrypt==0.9.2是旧版本,仅兼容py-bcrypt,和新版bcrypt的API不匹配,导致报错。


解决步骤

方案一:用django-bcrypt兼容的旧版依赖

  1. 卸载所有冲突包
    先清空所有相关包,避免版本混乱:

    pip uninstall -y bcrypt py-bcrypt django-bcrypt
    
  2. 安装兼容版本
    只安装django-bcrypt依赖的py-bcrypt,不要装新版bcrypt:

    pip install py-bcrypt==0.4 django-bcrypt==0.9.2
    
  3. 配置密码哈希器
    打开项目的settings.py,确保PASSWORD_HASHERS配置包含django_bcrypt的哈希器,放在最前面:

    PASSWORD_HASHERS = [
        'django_bcrypt.hashers.BCryptPasswordHasher',
        'django.contrib.auth.hashers.PBKDF2PasswordHasher',
        'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
        'django.contrib.auth.hashers.Argon2PasswordHasher',
        'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    ]
    
  4. 重新创建超级用户
    执行命令:

    python manage.py createsuperuser
    

方案二:放弃django-bcrypt,用Django原生bcrypt支持

如果方案一仍有问题,推荐用Django原生支持的bcrypt(无需第三方django-bcrypt包):

  1. 卸载所有相关包

    pip uninstall -y bcrypt py-bcrypt django-bcrypt
    
  2. 安装新版bcrypt

    pip install bcrypt==4.0.1
    
  3. 配置原生哈希器
    修改settings.py的PASSWORD_HASHERS,使用Django自带的BCrypt哈希器:

    PASSWORD_HASHERS = [
        'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
        'django.contrib.auth.hashers.PBKDF2PasswordHasher',
        # 保留其他默认哈希器
    ]
    
  4. 重新执行createsuperuser

    python manage.py createsuperuser
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:40:24