pipenv 报错 module 'collections' has no attribute 'MutableMapping'

这个问题很简单,因为 apt 安装的 pipenv 版本太老了,用最新的 pipenv 版本就好了,怎么获得最新的 pipenv 版本?直接用 pip 安装!

解决办法:

  • 方法一:使用自带的 pip 安装最新的 pipenv ,比如 ubuntu20 是自带的 pip3.8 可以安装,用命令 pip3 install pipenv 就好了
  • 方法二:使用自己编译安装的 python 带的 pipenv 就好了

ubutu20 自带的 python 解释器是 python3.8

╰─➤  lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:        20.04
Codename:       focal

我想安装一个 pipenv 来虚拟环 python3.10

python3.10 是通过源码自行编译安装的,参考:Ubuntu20.04 从源代码编译安装 python3.10

通过下面的代码安装 pipenv

sudo apt install pipenv

然后创建虚拟环境

pipenv install --python=/home/pon/opt/python/cpython/python3.10/bin/python3.10  

但是遇到了错误

╰─➤  pipenv install --python=/home/pon/opt/python/cpython/python3.10/bin/python3.10                                              130 ↵
Virtualenv already exists!
Removing existing virtualenv…
Creating a virtualenv for this project…
Using /home/pon/opt/python/cpython/python3.10/bin/python3.10 (3.10.7) to create virtualenv…
⠋created virtual environment CPython3.10.7.final.0-64 in 816ms
  creator CPython3Posix(dest=/home/pon/.local/share/virtualenvs/tracksource-XXsh2Vxq, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, pkg_resources=latest, via=copy, app_data_dir=/home/pon/.local/share/virtualenv/seed-app-data/v1.0.1.debian.1)
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

Virtualenv location: /home/pon/.local/share/virtualenvs/tracksource-XXsh2Vxq
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
  from . import utils
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requests/utils.py", line 27, in <module>
    from .cookies import RequestsCookieJar, cookiejar_from_dict
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requests/cookies.py", line 172, in <module>
    class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
AttributeError: module 'collections' has no attribute 'MutableMapping'

解决办法还是什么呢?

使用 python3.10 安装 pipenv

~/opt/python/cpython/python3.10/bin/pip3.10 install pipenv

查看版本,可以看到时最新的

─➤  pipenv --version
pipenv, version 2022.10.10

用这个最新的 pipenv 就可以创建 python3.10 的虚拟环境了

pipenv install --python=/home/pon/opt/python/cpython/python3.10/bin/python3.10                                              130 ↵
Creating a virtualenv for this project...
Pipfile: /home/pon/code/pon/tracksource/Pipfile
Using /home/pon/opt/python/cpython/python3.10/bin/python3.10 (3.10.7) to create virtualenv...
⠴ Creating virtual environment...created virtual environment CPython3.10.7.final.0-64 in 799ms
  creator Venv(dest=/home/pon/.local/share/virtualenvs/tracksource-XXsh2Vxq, clear=False, no_vcs_ignore=False, global=False, describe=CPython3Posix)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/pon/.local/share/virtualenv)
    added seed packages: pip==22.2.2, setuptools==65.3.0, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

✔ Successfully created virtual environment! 
Virtualenv location: /home/pon/.local/share/virtualenvs/tracksource-XXsh2Vxq
Pipfile.lock not found, creating...
Locking [packages] dependencies...
Locking [dev-packages] dependencies...
Updated Pipfile.lock (fedbd2ab7afd84cf16f128af0619749267b62277b4cb6989ef16d4bef6e4eef2)!
Installing dependencies from Pipfile.lock (e4eef2)...
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

ubuntu20 apt 仓库中的 pipenv 有多老?

╰─➤  pipenv --version                                       >                       
pipenv, version 11.9.0

图片.png


所以这个问题告诉我们,对于命令行工具,尽可能用 pip 安装,而不是 Linux 发行版仓库中的版本


python后端实战经验分享
Python来自荷兰,面向未来

Python 后端工程师可加:企鹅群:537131912

2.5k 声望
588 粉丝
0 条评论
推荐阅读
mysql 一次插入多行数据,获取的 insert_id 是第一行的 id 还是最后一行的 id?
mysql server 版本:8.0.31Q: 对于 mysql 协议,insert 的返回值里面包含什么信息?是否包含 insert_id?A: 通过 wireshark 抓包,结果如下:执行 sql: {代码...} mysql server 返回的内容如下:Q:mysql 一次插...

ponponon阅读 42

滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?

良许4阅读 2.3k

又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。

良许5阅读 1.8k

FastAPI性能碾压Flask?
不止一次的听过,FastAPI性能碾压Flask,直追Golang,不过一直没有测试过,今天闲着没事测试一下看看结果。不知道是哪里出了问题,结果大跌眼镜。

二毛erma02阅读 10.2k评论 3

封面图
Python之如何优雅的重试
为了避免偶尔的网络连接失败,需要加上重试机制,那么最简单的形式就是在对应的代码片段加一个循环,循环体里使用异常捕获,连接成功时退出循环,否则就重复执行相关逻辑,此时修改之后的函数f如下

Harpsichord12073阅读 7.3k

Linux终端居然也可以做文件浏览器?
大家好,我是良许。在抖音上做直播已经整整 5 个月了,我很自豪我一路坚持到了现在【笑脸】最近我在做直播的时候,也开始学习鱼皮大佬,直播写代码。当然我不懂 Java 后端,因此就写写自己擅长的 Shell 脚本。但...

良许1阅读 2.1k

基于 EKS Fargate 搭建微服务性能分析系统
近期 Amazon Fargate 在中国区正式落地,因 Fargate 使用 Serverless 架构,更加适合对性能要求不敏感的服务使用,Pyroscope 是一款基于 Golang 开发的应用程序性能分析工具,Pyroscope 的服务端为无状态服务且性...

亚马逊云开发者阅读 7.8k

Python 后端工程师可加:企鹅群:537131912

2.5k 声望
588 粉丝
宣传栏