Windows上通过bat避免python冲突


发布于 2019-06-22


做开发可能会安装多个版本python,或者是某些开发环境依赖某个版本python,而另外一个开发环境又以来另外一个版本python,导致一些冲突。

我就遇到python冲突的问题。因为做chromium开发,必须把的depot_tools这个目录加到Path环境变量中,而depot_tools这个里面又包含了一个python2.7,如果系统里又安装了python3,则会导致一些冲突,影响到开发。为了避免系统上多个python的影响,我使用python3的时候,总是会使用全路径,这个确实比较麻烦。

解决办法是我建立一个python3.bat的文件,放到C:\Windows目录中,python3.bat的内容如下:

@echo off

setlocal

set PATH=%PATH%;%~dp0;

C:\Users\john\AppData\Local\Programs\Python\Python37-32\python.exe %*
  • 因为我们是bat脚本,所以使用@echo off,否则会把我们bat里面的内容打印出来,不太符合直接调用程序的行为。
  • setlocal是启用bat里面的设置环境变量。
  • set PATH=%PATH%;%~dp0;是在bat运行的环境中临时把%~dp0所代表的bat所在的目录加到PATH环境变量中。
  • %*代表着传递给bat的参数,我们原样转发给python.exe

同样的,我们也可以给pip也做一个bat:

@echo off

setlocal

set PATH=%PATH%;%~dp0;C:\Users\john\AppData\Local\Programs\Python\Python37-32\Scripts

C:\Users\john\AppData\Local\Programs\Python\Python37-32\Scripts\pip.exe %*

就这样,我们不必把一些程序路径加到Path环境变量中,也可以通过cmd快捷的调用它们。