Ubuntu16.04下pip安装包后Python无法导入模块问题求助
你的环境里pip和Python版本是匹配的(都是2.7),但还是出现导入失败的情况,咱们一步步排查解决:
第一步:确认包是否安装到了正确位置
先检查你安装的包实际存放路径,执行以下命令:
pip show <你安装的包名>
看输出里的Location字段是不是/home/heatdeath/.local/lib/python2.7/site-packages。如果不是,大概率是安装时用了sudo,导致包被安装到系统级的/usr/lib/python2.7/site-packages目录,而你的Python默认优先搜索用户级目录,就会出现找不到的情况。
第二步:检查Python的包搜索路径是否包含用户目录
打开Python交互环境,输入以下代码:
import sys print(sys.path)
查看输出里有没有'/home/heatdeath/.local/lib/python2.7/site-packages'这个路径。如果没有,这就是核心问题——Python默认没把用户级的包目录加入搜索范围。
解决路径问题的两种方式:
- 临时生效:每次打开Python后手动添加路径:
之后再尝试导入包,应该就能成功。import sys sys.path.append('/home/heatdeath/.local/lib/python2.7/site-packages') - 永久生效:把路径添加到环境变量中,编辑你的
~/.bashrc文件:
在文件末尾添加一行:nano ~/.bashrc
保存退出后,执行export PYTHONPATH="/home/heatdeath/.local/lib/python2.7/site-packages:$PYTHONPATH"source ~/.bashrc让配置立即生效,之后每次打开Python都会自动包含这个路径。
关于pip路径不变的问题
你卸载重装后which pip还是指向~/.local/bin/pip是正常现象——这是用户级pip的默认安装位置,它的优先级比系统级的/usr/bin/pip更高,所以系统会优先找到它。如果非要换成系统级pip,可以执行:
sudo apt-get remove python-pip sudo apt-get install python-pip
但其实用户级pip更安全(不会影响系统全局的Python环境),你的情况里pip -V已经明确对应Python2.7,完全没必要更换。
额外提醒:是否需要切换到Python3?
Ubuntu16.04默认自带的是Python2,但很多新包已经不再支持Python2了。如果你实际需要使用Python3,可以检查系统里的Python3和pip3:
python3 -V pip3 -V
如果pip3没安装,执行sudo apt-get install python3-pip,之后用pip3 install <包名>安装,用python3运行脚本就能正常导入了。
内容的提问来源于stack exchange,提问作者theasucksatpython

