Ubuntu16.04下虚拟环境执行pip报ImportError问题求助
解决虚拟环境中pip调用全局Python2.7版本的问题
你遇到的核心问题很明确:激活Python3.5.4的虚拟环境后,执行pip命令时实际调用的是全局Python2.7的pip,这就是报错信息始终指向/usr/lib/python2.7/dist-packages/pip的原因。下面是针对性的解决步骤:
1. 确保调用虚拟环境内的pip
首先确认虚拟环境已正确激活——激活后命令行开头会显示环境名(比如(pytorch35))。如果还没激活,先执行:
source /home/abhisek/anaconda2/envs/pytorch35/bin/activate
激活后不要直接用pip,改用以下两种方式确保调用Python3.5版本的pip:
- 方法1:使用
pip3替代pippip3 install <你的目标包名> - 方法2:直接指定虚拟环境内的pip路径
/home/abhisek/anaconda2/envs/pytorch35/bin/pip install <你的目标包名>
2. 重新安装虚拟环境内的pip
如果上述方法无效,说明虚拟环境内的pip可能损坏或未正确安装,可重新安装:
- 先卸载虚拟环境内的pip(能运行的情况下):
pip uninstall pip -y - 用虚拟环境的Python重新安装并升级pip:
python -m ensurepip --upgrade
3. 屏蔽ROS的环境变量干扰
全局安装的ROS默认依赖Python2.7,会修改系统PYTHONPATH,把Python2.7的包路径放在优先级最高的位置,干扰虚拟环境的Python路径。激活虚拟环境后,可临时清空PYTHONPATH:
unset PYTHONPATH
之后再执行pip命令,就不会再调用全局Python2.7的pip了。
问题根源说明
ROS安装后会往PYTHONPATH中添加Python2.7的包路径,当你激活虚拟环境时,如果PYTHONPATH没被重置,虚拟环境的Python会优先加载全局Python2.7的包,导致pip命令“串线”到全局版本,最终出现那些指向/usr/lib/python2.7的错误。
内容的提问来源于stack exchange,提问作者Abhisek Konar
相关产品推荐
相关产品推荐

