系统中同时安装了三个版本的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共存相关推荐

  1. Linux Ubuntu 16.04 Python matplotlib安装中文字体,黑体,楷体,Times New Roman等,解决中文乱码

    Linux Ubuntu 16.04 Python matplotlib安装中文字体,Times New Roman等 文章目录 Linux Ubuntu 16.04 Python matplotli ...

  2. ubuntu多版本python和pip切换

    1. ubuntu自带python2.7和python3.5版本.那么跟据不同项目可能需要不同版本的python,如何切换呢? 首先,查看系统python版本,使用命令whereis python, ...

  3. 手把手教你在Linux系统下进行Python pip换源操作

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 世间无限丹青手,一片伤心画不成. ...

  4. linux ubuntu系统一键换pip conda源,无需多余命令。

    一.点击此链接,进入换源命令页. Oh My TUNAhttps://tuna.moe/oh-my-tuna/ 二.在桌面打开命令行,依次执行前两个命令 wget https://tuna.moe/o ...

  5. 如何在Anaconda中实现多版本python Spyder共存

    https://blog.csdn.net/baidu_38322309/article/details/74061143 转载于:https://www.cnblogs.com/nku-wangfe ...

  6. 无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages)

    无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages) # 在windows上打开anaconda,进入环境tab页,在base环境处单击,然后点开te ...

  7. 多版本Python共存时pip给指定版本的python安装package的方法

    在Linux安装了多版本Python时(例如python2.7和3.6),pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置. 例如目标位置是/usr/local/lib/pyth ...

  8. ubuntu下不同版本python安装pip及pip的使用

    由于ubuntu系统自带python2.7(默认)和python3.4,所以不需要自己安装python. 可以使用python -V和python3 -V查看已安装python版本. 在不同版本的py ...

  9. Win10下python不同版本同时安装并解决pip共存问题

    Win10下python不同版本同时安装并解决pip共存问题 参考文章: (1)Win10下python不同版本同时安装并解决pip共存问题 (2)https://www.cnblogs.com/du ...

最新文章

  1. Mysql 中如何创建触发器
  2. HTMLCSS 第三天 笔记
  3. DIV中class和id的区别
  4. axure 组件_技巧分享 | Axure后台组件制作的全过程
  5. 同步机制之--java之CountDownLatch闭锁
  6. 观星(【CCF】NOI Online能力测试3 入门组)
  7. 基于Redis的分布式锁的简单实现
  8. 约束理论学习随笔(1)
  9. HDU 4421 Bit Magic(2-sat)
  10. python科学计算库-Scipy,主要讲解优化,方程求解,积分,蒙特卡洛,插值计算
  11. 【渝粤教育】电大中专中药调剂作业 题库
  12. c语言表达式必须包含指针类型,c – 错误:表达式必须是指向完整对象类型的指针(?)...
  13. linux bigendian未定义,big endian与little endian
  14. 【零基础学Python】爬虫篇 :第十一节--Python爬虫Urllib用法合集
  15. 小程序源码:王者荣耀改重复名,空白名最低战力查询助手-多玩法安装简单
  16. 安富莱C语言编码规范
  17. mysql 常用查询语句
  18. 大数据技术之数据仓库
  19. 前端css让div浮动,Web前端篇:css浮动
  20. vue+django实现一对一聊天功能

热门文章

  1. python 网络摄像头 检测行为_python,opencv:在网络摄像头上检测到对象的持续时间...
  2. 关于计算机春联PPT,《春联》PPT课件
  3. python微信好友检测_用Python调教微信,实现自动回复 和 微信好友分布,好友性别图,好友标签...
  4. JAVA正则 find
  5. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(12月14日)...
  6. Python的re.rearch()和group()详解, 及它们的综合使用
  7. 单片机休眠与唤醒二三事
  8. 教育技术专业网站地址大全
  9. 如何将光盘做成ISO镜像文件
  10. ETH挖矿显卡算力大全