X

在Windows上轻松切换不同版本Python

从开始接触Python就一直使用2.7.x版本,后来想转到Python3.x版本,但是python2和python3版本不好切换就依然使用python2。
python2.7最2.x的最后一个大版本,并且不会再对2.7增加新特性,官方也建议转到3.x版本。所以就先写兼容python2和python3的脚本。之前测试的时候比较麻烦了,需要先到python2目录下运行,再到python3目录下运行。后面经过一段折腾终于可以方便的切换两个版本了。

python 启动器

python官方发布了一个python启动器,可以很方便的使用特定的python版本执行脚本。 该启动器被包含在python3.4及以后的安装包中。
先看使用帮助

C:\Users\my>py -h
Python Launcher for Windows Version 3.6.1150.1013

usage: py [ launcher-arguments ] [ python-arguments ] script [ script-arguments ]

Launcher arguments:

-2     : Launch the latest Python 2.x version
-3     : Launch the latest Python 3.x version
-X.Y   : Launch the specified Python version
-X.Y-32: Launch the specified 32bit Python version
py -2 test.py
py -3 test.py

这个启动器确实很好用,但是有以下弊端:

  • 对于双击执行的.py文件无效
  • 对于path环境变量里的.py文件不能直接使用文件名

bat脚本

python脚本查找python的步骤:

  1. 查找PATH环境变量里的python
  2. 查看PY_PYTHON环境变量的值

基于上面的查找步骤,只需要修改PATHPY_PYTHON环境变量就可以了。 这里我写了2个bat脚本,然后将它们的目录放入PATH变量中,方便随时调用。

setpy2.bat

@echo off
set pypath=D:\tools\Python27
set path=%pypath%;%pypath%\Scripts;%path%
set PY_PYTHON=2
rem 永久保存版本
setx PY_PYTHON 2

setpy2.bat

@echo off
set pypath=D:\tools\Python36
set path=%pypath%;%pypath%\Scripts;%path%
rem 设置py版本
set PY_PYTHON=3
rem 永久保存版本
setx PY_PYTHON 3

测试脚本

#!/usr/bin/env python

import sys
print(sys.version)

使用方式

setpy2
test.py

setpy3
test.py

上面的脚本只永久保存PY_PYTHON环境变量,而不永久保存PATH变量,所以将PATH环境变量中的python目录移除掉才能保证双击.py脚本时使用特定的python版本来执行。

This post was last modified on 2019 年 02 月 25 日 01:34

This website uses cookies.