Linux Ubuntu多版本python pip共存
系统中同时安装了三个版本的python:python 2.7 python3.5 python3.6
系统中同时安装了三个版本的pip:pip18 pip19.2.3 pip19.3.1,分别与上述对应
想要分开使用三个pip的办法:
$ python3.5 -m pip 后面接 list或install
$ python3.6 -m pip 后面接 list或install
$ python2.7 -m pip 后面接 list或install
-------------------------------------------完美共存的终极之道--------------------------------------------------
机器上本来安装好了 python 2.7和 python 3.5,后来又升级 3.5至 3.6,同时保留了 3.5。并且分别安装了各python对应版本的pip。这样就产生了三种版本的python和pip共存的情况。(python 3.5 安全升级至 python3.6 参考:https://blog.csdn.net/qxqxqzzz/article/details/102796903 条件允许的话请直接装 python3.6,不要从3.5进行升级!很麻烦)
三个版本共存会出现一些问题(下面探索过程中提到),主要原因有两个:
1,环境配置文件不对,即~/.bashrc中的PYTHONPATH配置
2,/home/xxx/.local/bin/pip3.5 文件的内容不对。(导致 $ /home/xxx/.local/bin/pip3.5 -V 或 $ pip3.5 -V 会报pip._internal.main的错误。但是$ /usr/local/bin/pip3.5 -V 不会报这个错误)
解决办法:复制 /usr/local/bin/pip3.5 替换 /home/xxx/.local/bin/pip3.5
# $ vi /usr/local/bin/pip3.5
----------------------正确的文件内容----------------------
#!/usr/bin/python3.5
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==19.2.3','console_scripts','pip3.5'
__requires__ = 'pip==19.2.3'
import sys
from pkg_resources import load_entry_pointif __name__ == '__main__':sys.exit(load_entry_point('pip==19.2.3', 'console_scripts', 'pip3.5')())# $ vi /home/xxx/.local/bin/pip3.5
----------------------错误的文件内容:----------------------
#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.main import main
if __name__ == '__main__':sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])sys.exit(main())----------------------解决-----------------------------------# 备份 /home/xxx/.local/bin/pip3.5
$ mv /home/xxx/.local/bin/pip3.5 /home/xxx/.local/bin/pip3.5-backup# 复制
$ cp /usr/local/bin/pip3.5 /home/xxx/.local/bin/# 查看
$ ls -al /home/xxx/.local/bin/pip*
-rwxrwxr-x 1 xxx xxx 217 10▒▒ 29 19:45 /home/xxx/.local/bin/pip
-rwxrwxr-x 1 xxx xxx 217 10▒▒ 29 19:45 /home/xxx/.local/bin/pip3
-rwxrwxr-x 1 xxx xxx 293 10▒▒ 29 20:18 /home/xxx/.local/bin/pip3.5
-rwxrwxr-x 1 xxx xxx 219 10▒▒ 29 19:44 /home/xxx/.local/bin/pip3.5-backup
-rwxrwxr-x 1 xxx xxx 217 10▒▒ 29 19:45 /home/xxx/.local/bin/pip3.6# 配置好环境变量,参考下文
$ vi ~/.bashrc# 此时的环境配置:
# ~/.bashrc:
export PYTHONPATH=/usr/bin/python3:/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib
export PATH=/home/xxx/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/cuda-10.1/bin:/home/xxx/.local/bin/pip3.6$ source ~/.bashrc
source之后重新打开新的窗口方可生效。即mobaxterm中重新打开一个tab页面。
参考:https://blog.csdn.net/m0_37041325/article/details/77164337
----------------------------------------------以下均为前期探索------------------------------------------------------
【此时的PYTHONPATH】 export PYTHONPATH=/usr/bin/python3:/usr/local/lib (~/.bashrc)
Python安装位置: Python解释器位置
$ which python3.5
/usr/bin/python3.5$ which python3.6
/usr/bin/python3.6$ which python2.7
/usr/bin/python2.7$ which python3
/usr/bin/python3$ which python2
/usr/bin/python2
Pip安装位置:
$ python3.5 -m pip -V
pip 19.2.3 from /usr/local/lib/python3.5/dist-packages/pip-19.2.3-py3.5.egg/pip (python 3.5)$ python3.6 -m pip -V
pip 19.3.1 from /home/xxx/.local/lib/python3.6/site-packages/pip (python 3.6)$ python2.7 -m pip -V
pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
pip命令的位置:
$ which pip
/home/xxx/.local/bin/pip$ which pip2
/usr/local/bin/pip2$ which pip2.7
/usr/local/bin/pip2.7$ which pip3
/home/xxx/.local/bin/pip3$ which pip3.5
/home/xxx/.local/bin/pip3.5$ which pip3.6
/home/xxx/.local/bin/pip3.6
Pip存在的路径
$ whereis pippip: /usr/bin/pip /usr/local/bin/pip2.7 /usr/local/bin/pip3.5 /usr/local/bin/pip /home/xxx/.local/bin/pip3.5 /home/xxx/.local/bin/pip /home/xxx/.local/bin/pip3.6 /usr/share/man/man1/pip.1.gz
--------------------------------------------------共存过程中出现的问题及解决方法------------------------------------------------------
【报错1】
$ /usr/local/bin/pip -V
Traceback (most recent call last):
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 583, in _build_master
ws.require(__requires__)
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 900, in require
needed = self.resolve(parse_requirements(requirements))
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 791, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (pip 19.3.1 (/home/xxx/.local/lib/python3.6/site-packages), Requirement.parse('pip==19.2.3'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3251, in <module>
@_call_aside
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3235, in _call_aside
f(*args, **kwargs)
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3264, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 585, in _build_master
return cls._build_from_requirements(__requires__)
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 598, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/home/xxx/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 786, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pip==19.2.3' distribution was not found and is required by the application
解决:修改 /usr/local/bin/pip 的代码
$ vi /usr/local/bin/pip将第一行 #!/usr/bin/python3 改成 #!/usr/bin/python3.5# 重新运行
$ /usr/local/bin/pip -V
pip 19.2.3 from /usr/local/lib/python3.5/dist-packages/pip-19.2.3-py3.5.egg/pip (python 3.5)
【报错2】
$ /home/xxx/.local/bin/pip -V 或 $ pip -V
Traceback (most recent call last):
File "/home/xxx/.local/bin/pip", line 6, in <module>
from pip._internal.main import main
ImportError: No module named 'pip._internal.main'
$ /home/xxx/.local/bin/pip3 -V 或 $ pip3 -V
Traceback (most recent call last):
File "/home/xxx/.local/bin/pip3", line 5, in <module>
from pip._internal.main import main
ImportError: No module named 'pip._internal.main'
解决:重新安装pip。参考:https://stackoverflow.com/questions/49940813/pip-no-module-named-internal
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py$ python3 get-pip.py --trusted-host=pypi.org --force-reinstall --user# 输出:
Collecting pipUsing cached https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl
Installing collected packages: pipFound existing installation: pip 19.3.1Uninstalling pip-19.3.1:Successfully uninstalled pip-19.3.1
Successfully installed pip-19.3.1$ /home/xxx/.local/bin/pip -V
pip 19.3.1 from /home/xxx/.local/lib/python3.6/site-packages/pip (python 3.6)$ /home/xxx/.local/bin/pip3 -V
pip 19.3.1 from /home/xxx/.local/lib/python3.6/site-packages/pip (python 3.6)# 一并修复了直接输入的pip 和 pip3命令问题
$ pip -V
pip 19.3.1 from /home/xxx/.local/lib/python3.6/site-packages/pip (python 3.6)$ pip3 -V
pip 19.3.1 from /home/xxx/.local/lib/python3.6/site-packages/pip (python 3.6)
至此可能 $pip3.5 -V 或 $ /home/xxx/.local/bin/pip3.5 -V 还是会报错,但是$pip -V 和 $pip3 -V已经不报错了。此时不要再运行
$ python3.5 get-pip.py --trusted-host=pypi.org --force-reinstall --user
来尝试修复这个问题,否则又会回到之前报错的状态(pip和pip3也报错)。
-------------------------------------------------------------------------------------------
想要解决pip3.5 -V不报错:去掉 ~/.bashrc 中的PYTHONPATH内容,然后source一下,
这时候就可以了。但是此时不能使用pip3.6,因为会产生新的报错:
$ pip3 -V
Traceback (most recent call last):
File "/usr/lib/python3.6/dbm/gnu.py", line 4, in <module>
from _gdbm import *
ModuleNotFoundError: No module named '_gdbm'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 7, in <module>
import dbm.gnu as gdbm
File "/usr/lib/python3.6/dbm/gnu.py", line 6, in <module>
raise ImportError(str(msg) + ', please install the python3-gdbm package')
ImportError: No module named '_gdbm', please install the python3-gdbm package
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 27, in <module>
from CommandNotFound.util import crash_guard
File "/usr/lib/python3/dist-packages/CommandNotFound/__init__.py", line 3, in <module>
from CommandNotFound.CommandNotFound import CommandNotFound
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 9, in <module>
import gdbm
ModuleNotFoundError: No module named 'gdbm'
$ pip3.6 -V
Traceback (most recent call last):
File "/usr/lib/python3.6/dbm/gnu.py", line 4, in <module>
from _gdbm import *
ModuleNotFoundError: No module named '_gdbm'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 7, in <module>
import dbm.gnu as gdbm
File "/usr/lib/python3.6/dbm/gnu.py", line 6, in <module>
raise ImportError(str(msg) + ', please install the python3-gdbm package')
ImportError: No module named '_gdbm', please install the python3-gdbm package
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 27, in <module>
from CommandNotFound.util import crash_guard
File "/usr/lib/python3/dist-packages/CommandNotFound/__init__.py", line 3, in <module>
from CommandNotFound.CommandNotFound import CommandNotFound
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 9, in <module>
import gdbm
ModuleNotFoundError: No module named 'gdbm'
此时报错的原因可能是系统找不到pip3和pip3.6了。
$ which pip3$ which pip3.6均没有输出。
并且此时的pip pip3.5均指向了新的路径
$ which pip
/usr/local/bin/pip$ which pip3.5
/usr/local/bin/pip3.5
解决:ModuleNotFoundError: No module named 'gdbm'
安装 python3.6-gdbm
$ sudo apt-get install python3.6-gdbm
Linux Ubuntu多版本python pip共存相关推荐
- Linux Ubuntu 16.04 Python matplotlib安装中文字体,黑体,楷体,Times New Roman等,解决中文乱码
Linux Ubuntu 16.04 Python matplotlib安装中文字体,Times New Roman等 文章目录 Linux Ubuntu 16.04 Python matplotli ...
- ubuntu多版本python和pip切换
1. ubuntu自带python2.7和python3.5版本.那么跟据不同项目可能需要不同版本的python,如何切换呢? 首先,查看系统python版本,使用命令whereis python, ...
- 手把手教你在Linux系统下进行Python pip换源操作
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 世间无限丹青手,一片伤心画不成. ...
- linux ubuntu系统一键换pip conda源,无需多余命令。
一.点击此链接,进入换源命令页. Oh My TUNAhttps://tuna.moe/oh-my-tuna/ 二.在桌面打开命令行,依次执行前两个命令 wget https://tuna.moe/o ...
- 如何在Anaconda中实现多版本python Spyder共存
https://blog.csdn.net/baidu_38322309/article/details/74061143 转载于:https://www.cnblogs.com/nku-wangfe ...
- 无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages)
无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages) # 在windows上打开anaconda,进入环境tab页,在base环境处单击,然后点开te ...
- 多版本Python共存时pip给指定版本的python安装package的方法
在Linux安装了多版本Python时(例如python2.7和3.6),pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置. 例如目标位置是/usr/local/lib/pyth ...
- ubuntu下不同版本python安装pip及pip的使用
由于ubuntu系统自带python2.7(默认)和python3.4,所以不需要自己安装python. 可以使用python -V和python3 -V查看已安装python版本. 在不同版本的py ...
- Win10下python不同版本同时安装并解决pip共存问题
Win10下python不同版本同时安装并解决pip共存问题 参考文章: (1)Win10下python不同版本同时安装并解决pip共存问题 (2)https://www.cnblogs.com/du ...
最新文章
- Mysql 中如何创建触发器
- HTMLCSS 第三天 笔记
- DIV中class和id的区别
- axure 组件_技巧分享 | Axure后台组件制作的全过程
- 同步机制之--java之CountDownLatch闭锁
- 观星(【CCF】NOI Online能力测试3 入门组)
- 基于Redis的分布式锁的简单实现
- 约束理论学习随笔(1)
- HDU 4421 Bit Magic(2-sat)
- python科学计算库-Scipy,主要讲解优化,方程求解,积分,蒙特卡洛,插值计算
- 【渝粤教育】电大中专中药调剂作业 题库
- c语言表达式必须包含指针类型,c – 错误:表达式必须是指向完整对象类型的指针(?)...
- linux bigendian未定义,big endian与little endian
- 【零基础学Python】爬虫篇 :第十一节--Python爬虫Urllib用法合集
- 小程序源码:王者荣耀改重复名,空白名最低战力查询助手-多玩法安装简单
- 安富莱C语言编码规范
- mysql 常用查询语句
- 大数据技术之数据仓库
- 前端css让div浮动,Web前端篇:css浮动
- vue+django实现一对一聊天功能
热门文章
- python 网络摄像头 检测行为_python,opencv:在网络摄像头上检测到对象的持续时间...
- 关于计算机春联PPT,《春联》PPT课件
- python微信好友检测_用Python调教微信,实现自动回复 和 微信好友分布,好友性别图,好友标签...
- JAVA正则 find
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(12月14日)...
- Python的re.rearch()和group()详解, 及它们的综合使用
- 单片机休眠与唤醒二三事
- 教育技术专业网站地址大全
- 如何将光盘做成ISO镜像文件
- ETH挖矿显卡算力大全