python2和python3的pip冲突解决

    对于学习python的人来说,python2和python3必不可少,但当同时安装了两者后,又会带来一些冲突问题,比如shell中输入python,shell就会以最先在环境变量中找到的python为准,这样很多情况下并非是我们所想。而很多人的解决办法是修改其中一个python.exe的名字,比如修改为python2.exe之类。这样做的确解决了输入python所带来的冲突问题,但这同时也带来了隐患,即直接导致python 2的pip不再可用,输入pip2将会产生错误:Fatal error in launcher: Unable to create process using '"'。
    那如何解决这一连串的冲突问题呢?
    办法一(来自社区):
    事实上这个问题几年以前Python社区就给出了官方解决方案,只不过国内一直没有注意到罢了。
    我们在安装Python3(>=3.3)时,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面。这个启动器允许我们指定使用Python2还是Python3来运行代码(当然前提是你已经成功安装了Python2和Python3)。
    如果你有一个Python文件叫 hello.py,那么你可以这样用Python2运行它:
       py -2 hello.py
    类似的,如果你想用Python3运行它,就这样:
       py -3 hello.py
    不过每次运行都要加入参数-2/-3还是比较麻烦,所以py.exe这个启动器允许你在代码中加入说明,表明这个文件应该是由python2解释运行,还是由python3解释运行。说明的方法是在代码文件的最开始加入一行:
       #! python2
   或者:
       #! python3
   分别表示该代码文件使用Python2或者Python3解释运行。这样,运行的时候你的命令就可以简化为:
       py hello.py

   pip冲突解决办法:
   当Python2和Python3同时存在于windows上时,它们对应的pip都叫pip.exe,所以不能够直接使用 pip install 命令来安装软件包。而是要使用启动器py.exe来指定pip的版本。命令如下:
       py -2 -m pip install XXXX
    -2 还是表示使用 Python2,-m pip 表示运行 pip 模块,也就是运行pip命令了。如果是为Python3安装软件,那么命令类似的变成:
       py -3 -m pip install XXXX

    办法二(改进版):
    办法一虽说可行,但是要在shell中输入时还是稍显麻烦,如果我还是想直接输入python2就能启动对应的解释器呢?对于这个问题,我最开始是创建了对应的快捷方式,然后修改其名字为python2.exe,再将其所在目录添加到环境变量,然而当在shell中输入时,居然提示找不到python2命令!所以我只能猜测shell中不能直接执行快捷方式了。郁闷了一会儿,我又想到了批处理脚本,直接将python.exe所在的绝对路径写入其中就行了,比如:C:\python27\python。然后再修改文本名为python2.bat,再把其所在路径添加到环境变量,最后测试,终于一切OK了 ,同理,pip也可采取类似的办法解决(不过一般安装时已经有了一个pip2了,直接将其添加到环境变量中即可了)。这样一来,命令python和pip在shell下的冲突问题就完美解决了 
   

猜你喜欢

转载自aisxyz.iteye.com/blog/2363482