Windows下Python2和Python3共存的设置方法

前言

之前在自己电脑上写代码、跑程序用的都是 Python3,基本不会出现必须用 Python2 的情况。然而,最近 clone 了别人的项目下来学习,发现必须用 Py2 才能正常运行,否则不断报错,而且是外部模块报的错误,调试起来实在无力,遂决定在电脑上同时装上 Py2 和Py3,顺便把过程记录下来。

安装Python2&3

  • 分别下载 Python2 和 Python3 安装包,安装顺序没有要求,安装时选上加入系统变量中的Path选项。都安装好后检查系统变量中的Path中有没加入以下内容;没有加入,就手动添加,记得每一项都必须用 ;分隔

    1
    2
    3
    4
    C:\Program Files (x86)\Python27\
    C:\Program Files (x86)\Python27\Scripts #此目录暂时没有,安装完pip后才生成
    C:\Program Files (x86)\Python34\
    C:\Program Files (x86)\Python34\Scripts
  • 打开 Python2 和 Python3 的安装目录,确保PythonX\目录下没有同名的python.exe文件,可以参考以下修改

    Python27\

    1
    2
    python.exe --> python2.exe
    pythonw.exe --> pythonw2.exe

    Python34\

    1
    2
    3
    4
    python.exe --> 不用修改
    pythonw.exe --> 不用修改
    当然你也可以相应修改为 python3.exe 和 pythonw3.exe,因为我一般用 Python3,为了方便就保留默认

    这样修改后,在cmd中就可以直接用 python2运行python2,用 python运行python3了。

安装pip和easy_install

  • Python3 安装包中已经包含安装 pip 的选项了,安装时选上就能自动安装好pipeasy_install,它们的运行程序保存目录在PythonX\Scripts\,如果安装时忘了选上,可以参照下面 Python2 安装 pip 的方法

    1
    python get-pip.py
  • Python2 安装包没有包含安装 pip 的选项,可以在打开 https://bootstrap.pypa.io/get-pip.py将程序右键另存为get-pip.py文件,记得使用管理员身份运行

    1
    python2 get-pip.py
  • 最后,打开Python2X\Scripts\Python3X\Scripts\目录,确保两个目录下没有同名的pip.exeeasy_install.exe文件,可以参考以下修改

    Python27\Scripts\

    1
    2
    pip.exe --> pip2.exe
    easy_install.exe --> easy_install2.exe

    Python34\Scripts\

    1
    2
    3
    4
    pip.exe --> 不用修改
    easy_install.exe --> 不用修改
    同上,你也可以相应修改为 pip3.exe 和 easy_install3.exe,因为我一般用 Python3,为了方便就保留默认

    这样修改后,在cmd中就可以直接用 pip2运行python2中的pip,用 pip运行python3中的pipeasy_install同理。

安装虚拟环境virtualenv

  • Python3

    1
    pip install virtualenv
  • Python2

    1
    pip2 install virtualenv
  • 因为默认安装好的virtualenv程序文件名为virtualenv.exe,显然 Python2 和 Python3 不能有同名的virtualenv.exe,于是可以参考以下修改

    1
    2
    3
    4
    5
    Python2:
    virtualenv.exe --> virtualenv2.exe
    Python3:
    virtualenv.exe --> 不用修改

小结

关键的步骤是系统变量中设置的目录下不能有同名的文件,否则系统怎么知道你要调用哪个文件,改掉同名的文件就行了:)

经过上面的设置,就可以在使用命令行的时候方便的区分 Python2 还是 Python3 了,有些项目只支持 Python2,可以创建 Python2 的虚拟环境,方便本地调试,更重要的是可以少踩一些坑(╯‵□′)╯︵┻━┻