Ubuntu 16.04下pip3无法使用求助(pip与sudo pip3可正常运行)
我帮你梳理下这个问题的解决思路,你遇到的情况在Ubuntu 16.04里挺常见的,主要和权限、环境配置以及老版本Python的兼容性有关,下面给你一步步来解决:
一、先排查pip3的权限与路径问题
首先得确认是不是路径不对或者权限卡了:
先对比普通用户和sudo下的pip3路径是否一致:
which pip3 sudo which pip3如果输出路径不一样,说明普通用户的环境变量里的pip3指向了错误位置(比如之前自行安装的pip3但权限配置有误)。
修复用户目录权限:
很多时候是~/.local目录的权限被改乱,导致普通用户无法访问自己的pip缓存目录,执行这条命令就能把权限重新归还给当前用户:sudo chown -R $USER:$USER ~/.local
二、彻底重装pip3(适配Ubuntu 16.04的Python3.5)
你之前试过的重装方法可能没清理干净残留文件,试试这套彻底的步骤:
完全卸载现有pip3相关文件:
sudo apt purge -y python3-pip sudo rm -rf ~/.local/lib/python3.5/site-packages/pip* sudo rm -rf /usr/local/lib/python3.5/dist-packages/pip*Ubuntu16.04默认Python3版本是3.5,所以要对应清理这个版本的相关目录。
重新安装官方pip3:
sudo apt update sudo apt install -y python3-pip升级到兼容Python3.5的pip版本:
系统默认的pip3版本偏老,但也不能直接更到最新(最新版不再支持Python3.5),升级到9.0.3这个稳定版刚好适配:sudo pip3 install --upgrade pip==9.0.3
三、解决spaCy英文模型安装问题
spaCy的安装问题大概率和pip3的环境异常有关,按以下步骤操作:
用普通用户权限安装spaCy:
别用sudo安装,否则包的权限会归root,普通用户无法正常调用,加--user参数将包安装到用户私有目录:pip3 install spacy --user安装对应版本的英文模型:
受限于Python3.5的版本,spaCy不能用太高版本,模型也要匹配,安装2.0.0版本的en_core_web_sm稳定性最好:pip3 install en_core_web_sm==2.0.0 --user验证安装是否成功:
打开Python3终端测试:python3输入以下代码:
import spacy nlp = spacy.load("en_core_web_sm") print(nlp("Hello world").text)若能正常输出
Hello world,说明模型安装成功。
四、推荐:用虚拟环境彻底避免环境混乱
为了以后不再踩权限和版本兼容的坑,建议用虚拟环境管理Python包:
安装虚拟环境工具:
sudo apt install -y python3-venv创建并激活虚拟环境:
python3 -m venv my_spacy_env source my_spacy_env/bin/activate激活后终端会出现
(my_spacy_env)标记,此时所有包的安装都局限在这个环境内,不会影响系统全局环境。在虚拟环境内安装spaCy和模型:
pip install spacy pip install en_core_web_sm虚拟环境中默认绑定Python3的pip,直接用
pip命令即可。
内容的提问来源于stack exchange,提问作者gajam

