python2 和python3同时存在,各自的版本分别是——
Operating System: Ubuntu 18.04.5 LTS
Python 2.7.17
Python 3.6.9
pip 20.3.4 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
pip install websockets
错误摘要:
No module named pathlib
错误详细:
ERROR: Command errored out with exit status 1:
command: /usr/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-75NDD2/websockets/setup.py'"'"'; __file__='"'"'/tmp/pip-install-75NDD2/websockets/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-HpaLaU
cwd: /tmp/pip-install-75NDD2/websockets/
Complete output (5 lines):
Traceback (most recent call last):
File "" , line 1, in <module>
File "/tmp/pip-install-75NDD2/websockets/setup.py", line 1, in <module>
import pathlib
ImportError: No module named pathlib
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
直接原因
ImportError: No module named pathlib
导入错误,没有名字叫pathlib的依赖
进一步分析
系统上同时安装了python2和python3,其中pip应该是和python2是对应关系,pip3应该是和python3是对应关系。但是当我pip3 -v
的时候,提示没有安装。所以再解决问题之前,我打算重新安装一下python2和python3以及pip,或者是整理一下他们的关系。
Ubuntu同时安装Python2,Python3,Pip2和Pip3并配置
通过一顿恶补以后,我决定纠正我一些不良的安装习惯,重新尝试一下安装websockets
模块。
这次我执行的代码如下
python3 -m pip install websockets
Congraduation!
websockets
是python3下面的包,而pip
是python2的包管理,它的安装环境是python2,也就是说它是给python2装的包。所以理所当然会出现No module named pathlib
这样的错误,可以推测出pathlib
也是python3才会拥有的包。所以解决办法很简单,就是使用python3的包管理模块下载。要么是pip3 install websockets
要么是python3 -m pip install websockets
。推荐使用后一种。
参考链接
# pip3 安装
python3 -m pip install websockets
查过其他博客他们都说是要升级pip。。。也就是执行下面一行命令
pip3 install --upgrade pip
其实本质就是你正在安装的包里面某一个依赖,你当前环境下没有。升级一下pip或许就有了呢?嘻嘻。不过如果是pip版本太旧的话,一般系统都会提醒你升级。所以最关键的还是确定你想要安装的包的运行环境是python2.6 还是python3.6 ,又或者是python3.7。而不是盲目的将pip和pip3 一概而论。迟早会出错的。就算是装上了哈哈哈哈。好啦,最后推荐使用 python -m pip
替代使用pip
。