Windows 下 Python2 与 Python3 共存的环境配置

2016-06-01 21:42:19 +08:00
 NxnXgpuPSfsIT

Python 中 Python 2 与 Python 3 的关系一直很让人头疼,本文主要讲述如何在 Windows 系统中配置两个版本共存的环境。

随着越来越多的人使用 Python 3 ,很多程序都在考虑移植到 Python 3 ,一个共存的环境非常必要。

而另一方面,许多程序目前却也仅有 Python 2 的版本,让安装 Python 3 的用户使用非常不方便,日常使用也需要一个共存的环境。

虽然官方给出了py.exe的解决方案,但具体的配置可能还需要一定的普及与指导。

希望本文能够一定程度上减少 Python 的版本问题给你带来的困扰。

流程介绍

安装两个版本的 Python

简单而言,你可以在任意位置安装这两个版本的 Python 。

但是出于寻找的便利以及写教程的方便,这里还是给出一个个人较为喜欢的安装位置。

C:\
    Python\
        Launcher\
            py.exe
        Python27\
            python.exe
        Python35\
            python.exe

Launcher即 Python35 在安装时会询问的是否安装的启动器。

修改注册表、环境变量

如果你本身 Python27 、 Python35 的位置就是如上面文件树所述,那么可以跳过本节。

如果你修改了 Python27 的位置,那么你需要在启动regedit(使用 Win + R 启动),修改注册表:

如果你修改了 Python35 的位置,那么最简单的方法就是卸载重新装在新的位置。

之后我们需要将py.exe所在的目录加入环境变量,使我们可以在命令行使用py命令。

到此你已经可以正常的使用两个版本的 Python 了。

# 使用默认版本的 Python
py
# 使用 Python 27
py -2
# 使用 Python 35
py -3

你也可以通过在文件头部指定 Python 版本:

#! python3

pip 及命令行第三方包的使用

有通过增加环境变量或者使用批处理文件使用pip的方法,但都会有一些问题,这里推荐直接使用如下命令:

py -m pip install itchat
# 指定特定版本的 pip
py -3 -m pip install itchat

做好上述配置以后会发现第三方包的命令行工具不能用了,这是因为我们需要做两件事情:

这样的情况下如果两个版本都有同名的命令行工具会优先使用 Python27 的命令行工具。

结语

如果有什么问题或者建议,欢迎评论或者与我邮件联系。

LittleCoder

160528

9197 次点击
所在节点    Python
45 条回复
ruoyu0088
2016-06-01 22:29:44 +08:00
我都是用 winpython 或者 anaconda ,便携式开发环境,想装多少就装多少。我的电脑上一共由 python 2/3, 32bit/64it, winpython/anaconda ,共 8 个环境。
NxnXgpuPSfsIT
2016-06-01 23:28:00 +08:00
@ruoyu0088 哈哈,可以。能分享一下这样配的话第三方命令行工具要怎么设置吗?
dishonest
2016-06-01 23:37:48 +08:00
Anaconda +1
@NxnXgpuPSfsIT 命令行指定 python 版本可以用实际 python 路径来执行
pynix
2016-06-02 00:19:50 +08:00
There should be one-- and preferably only one --obvious way to do it, but your give me two imcompatable version.
joshz
2016-06-02 00:21:01 +08:00
感觉 conda 越来越强大了, activate 挺好用,一键切换命令行 Python 环境。
lxy
2016-06-02 00:29:22 +08:00
我记得没这么复杂吧,直接先装 py2 ,再装 py3 ,就自动配置好了。从没修改过注册表。
ruoyu0088
2016-06-02 05:23:33 +08:00
anaconda 有 activate.bat , winpython 有 env.bat 。我用 conemu ,设置多个启动选项,分别启动不同的命令行环境。还为每个环境配置好启动 IPython kernel 的设置,这样无论启动哪个环境中的 Jupyter notebook ,都可以使用所有的环境作为运算核。
xiamx
2016-06-02 06:22:08 +08:00
why can't you just use anaconda?
Neveroldmilk
2016-06-02 08:06:22 +08:00
不要改环境变量就行了,没多大技术含量。
xiahei
2016-06-02 08:27:16 +08:00
why not Linux ?
duobei
2016-06-02 08:40:36 +08:00
@xiamx 是啊,为毛不使用 conda 呢
littleshy
2016-06-02 09:28:00 +08:00
把 python3 里的 python.exe 改为 python3.exe ,完事。
cxyfreedom
2016-06-02 09:30:27 +08:00
直接用 anaconda 就行了,何必这么麻烦
raptor
2016-06-02 09:42:18 +08:00
珍爱生命,远离 windows 。
反正我在 linux/mac 下用 virtualenv 做 py2/3 共存完全没问题,而且很简单
NxnXgpuPSfsIT
2016-06-02 11:54:45 +08:00
@ruoyu0088 是不是挺麻烦的?就不说哪个好用,起码官方给出的这个解决方案值得一试吧。
NxnXgpuPSfsIT
2016-06-02 11:58:45 +08:00
@dishonest 这也是个方案。我建议可以尝试这个官方给出的使用模式,原因有三。指定的命令很长。在使用一般 module 例如 pip 是可以的,但第三方的命令行工具就无法使用。配置方便,不需要额外的下载。
NxnXgpuPSfsIT
2016-06-02 12:00:12 +08:00
@joshz 是的,我本来想写这个教程的。但后来发现官方竟然给出了一个可用的操作。
NxnXgpuPSfsIT
2016-06-02 12:02:21 +08:00
@lxy 我测试 win10 的时候出了这个问题,以免别人也碰到解决不了,就写上了
NxnXgpuPSfsIT
2016-06-02 12:04:20 +08:00
@xiamx why can't you just use Chinese...
多了解一种可能的解决方案呀,不想知道右上角红叉。
NxnXgpuPSfsIT
2016-06-02 12:05:07 +08:00
@xiahei linux 用户大家都有基础,没啥教程的必要,就没写。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/282819

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX