V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
skyboy
V2EX  ›  问与答

ubuntu 中有两个 python 怎么办

  •  
  •   skyboy · 2016-11-11 11:01:47 +08:00 · 3826 次点击
    这是一个创建于 2933 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 新安装的 ubuntu 中执行 sudo apt-get install python 3.5 ,然后查询 python -V 显示 2.7 , python3 -V 显示 3.5.

    但是想让 ubuntu sublimetext 用 python3.5 的语法怎么办。执行 sudo apt-get autoremove python ,完毕。

    查询 python -V 还是现实 python2.7. python3 -V 显示 3.5 。而在 sublimetext 中新建一个 test.py 文件,输入:

    print "hello wold";
    print("hello world");

    按 ctrl+b 都能通过,请问怎么干净去掉 python 2.7,让 ubuntu 和 sublimtext 只使用 python3.5.
    20 条回复    2016-11-11 17:07:11 +08:00
    zipipi
        1
    zipipi  
       2016-11-11 11:05:31 +08:00
    不是可以指定版本的么
    shaoS
        2
    shaoS  
       2016-11-11 11:17:50 +08:00
    把 /usr/bin/python -> python2.7 改成这样 /usr/bin/python -> python3.5
    SpicyCat
        3
    SpicyCat  
       2016-11-11 11:24:05 +08:00
    http://itcoding.tk/2016/06/19/python-alternatives/
    上面那篇博文说的比较全面。
    如果主力用 Ubuntu 的话,建议详细了解一下 update-alternatives ,它是 Debian 系管理多版本软件的工具,不仅适用 Python ,而且还使用 Java 等各种有多版本共存需求的软件。
    它跟 virtualenv 这种虚拟环境不同的是, update-alternatives 管理的是系统级的软件版本, virtualenv 管理的是当前用户下的一个虚拟环境。
    当然就你的需求而言,只要你在 virtualenv 启动的虚拟环境下打开 sublime ,那也没问题,但终究不方便。
    hosiet
        4
    hosiet  
       2016-11-11 11:34:49 +08:00 via Android   ❤️ 2
    不要试图修改系统指定的 python 解释器,不要卸载,不要改软链接。修改的后果是严重的,对 python 2/3 有严格区分的软件会集体崩掉。
    feather12315
        5
    feather12315  
       2016-11-11 11:35:45 +08:00 via Android
    楼上说法正确。
    skyboy
        6
    skyboy  
    OP
       2016-11-11 11:49:38 +08:00
    @hosiet 那我想问,这样两个版本共存的情况下。我在 sublimetext 中编辑.py 文件,执行时他到底用的是 python2.7 的语法,还是用的 3.5 的语法。这两个版本到底哪个起作用,在此感觉迷糊了。
    hosiet
        7
    hosiet  
       2016-11-11 11:54:07 +08:00 via Android
    这你需要看 sublime 究竟是调用 python / python2 / python3 / python2.7 / python3.5 中的哪一个做解释器,以及究竟有没有选项进行修改。

    我不用 sublime 所以并不知道。
    yxcxx
        8
    yxcxx  
       2016-11-11 11:57:40 +08:00
    为什么不试试
    #! /usr/bin/env python3
    #! /usr/bin/env python2
    dexterzzz
        9
    dexterzzz  
       2016-11-11 12:26:54 +08:00
    用 anaconda
    sensui7
        10
    sensui7  
       2016-11-11 12:33:32 +08:00 via iPhone
    @skyboy 你管他用那个呢? sublime 还内置了 python 呢?自己手动创建个 build 配置就行了。
    kkzxak47
        11
    kkzxak47  
       2016-11-11 12:55:19 +08:00 via Android
    想 ctrl+b build 那就在 sumlime text 里配置 build 啊,查文档啊,改系统是怎么回事???
    neosfung
        12
    neosfung  
       2016-11-11 13:04:13 +08:00
    尽量用 pyenv
    LigeLaige
        13
    LigeLaige  
       2016-11-11 13:19:07 +08:00
    去掉 py2 或 py3 是作死,如果可以去,发行版中早就去了
    你可以可以在 python 程序第一行写成
    #!/usr/bin/env python

    #!/usr/bin/env python2

    #!/usr/bin/env python3
    以指定对应版本

    再次强调,##去掉 py2 或 py3 是作死##
    whwq2012
        14
    whwq2012  
       2016-11-11 13:22:31 +08:00 via Android
    别删除啊,不用就行了,我曾经就在服务器上作死地删除了自带的 python ,然后一堆系统软件依赖,最后系统没法用了,只能重装
    panda1001
        15
    panda1001  
       2016-11-11 13:22:39 +08:00 via Android
    建议自己编译安装 python+virtualenv ,每次要用就切换不同的环境
    noe132
        16
    noe132  
       2016-11-11 13:47:21 +08:00 via Android
    Ubuntu 不要删掉 python 。 。否则一堆问题。
    修改 sublime 的编译配置文件就好了
    bsns
        17
    bsns  
       2016-11-11 14:40:25 +08:00 via Android
    我 14.04 时把系统默认 python 链接为 3.结果重启后出了问题,最后忘了怎么改回去的了,估计是重装了。
    chousb
        18
    chousb  
       2016-11-11 14:42:16 +08:00
    不要作死,删 python 你系统肯定挂。
    sublime 写 python ,你看一下 build 文件怎么写的就行了。
    HackerOO7
        19
    HackerOO7  
       2016-11-11 15:30:36 +08:00
    我是修改 Anaconda 的配置文件指定 python_interpreter
    wohenyingyu02
        20
    wohenyingyu02  
       2016-11-11 17:07:11 +08:00
    python3 -m venv ~/PyEnv
    每次使用前进入环境:
    source ~/PyEnv/bin/activate
    使用后退出环境
    deactivate

    不谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2876 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:15 · PVG 19:15 · LAX 03:15 · JFK 06:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.