Pipenv虚拟环境安装依赖锁失败 报AttributeError如何解决?
问题诱因
- 你当前使用的
pipenv程序安装在Anaconda管理的Python3.6环境中,并非你项目指定的Python3.9虚拟环境。执行pipenv相关命令时,系统会优先调用Python3.6环境下的pipenv程序,因此会出现项目用Python3.9却加载Python3.6依赖的问题。 - 具体报错
AttributeError: module 'lib' has no attribute 'ERR_load_RAND_strings'是Python3.6环境下的pyOpenSSL依赖版本过老导致的:老版本pyOpenSSL调用的ERR_load_RAND_strings方法已在新版OpenSSL库中被移除,版本不兼容触发报错。
修复方案
- 第一步:确认
pipenv安装路径
执行命令which pipenv,若输出路径指向/Users/mainuser/anaconda/bin/pipenv,则可确认pipenv确实安装在Anaconda的Python3.6环境中。 - 第二步:卸载旧版本
pipenv
在Anaconda的base环境中执行pip uninstall pipenv,删除Python3.6环境下的pipenv程序。 - 第三步:为Python3.9环境安装
pipenv
如果你用pyenv管理Python版本,先切换到Python3.9环境后执行pip install pipenv;也可以直接指定Python3.9路径安装:/Users/mainuser/.pyenv/versions/3.9.2/bin/python -m pip install pipenv - 第四步:验证安装结果
执行pipenv --version,确认输出关联的Python版本为3.9即可。 - 第五步:修复项目依赖
进入Django项目目录,删除异常的锁文件:rm Pipfile.lock,之后重新执行pipenv lock --clear或依赖安装命令即可正常运行。
临时应急方案:如果不想修改全局
pipenv配置,可在项目中直接调用虚拟环境内的Python执行pipenv命令,示例:/你的项目虚拟环境路径/bin/python -m pipenv lock --clear
内容的提问来源于stack exchange,提问作者Finn
相关产品推荐
相关产品推荐

