作者:匿名用户
链接:https://www.zhihu.com/question/21653286/answer/95532074
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

想学习Python3,但是暂时又离不开Python2。在Windows上如何让它们共存呢?

目前国内网站经常会让大家把其中一个python.exe改个名字(嗯,我也这样讲过,在此纠正一下),这样区分开两个可执行文件的名字,但是这样做有一个重大的隐患,就是修改了名字的那个python对应的pip将无法使用。

官方的解法是什么?

事实上这个问题几年以前Python社区就给出了官方解决方案,只不过国内一直没有注意到罢了。

我们在安装Python3(>=3.3)时,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面。这个启动器允许我们指定使用Python2还是Python3来运行代码(当然前提是你已经成功安装了Python2和Python3)。

    有关Python2和3的安装,可以参见Python部落(http://python.freelycode.com)-->影音学堂-->《0基础1小时,Python入门》的第一节。

如果你有一个Python文件叫 hello.py,那么你可以这样用Python2运行它

    py -2 hello.py

类似的,如果你想用Python3运行它,就这样

    py -3 hello.py

去掉参数 -2/-3

每次运行都要加入参数-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

#! python2 和 # coding: utf-8 哪个写在前面?

对于Python2用户还有另外一个困惑,Python2要在代码文件顶部增加一行说明,才能够在代码中使用中文。如果指明使用的Python版本也需要在文件顶部增加一行,那哪一行应该放在第一行呢?

#! python2 需要放在第一行,编码说明可以放在第二行。所以文件开头应该类似于:

    #! python2
    # coding: utf-8

有了这些技巧,Python2和Python3就可以愉快地在一起玩耍了~

Windows上Python2和3如何兼容的更多相关文章

  1. Windows上Python2与Python3同时安装、共存

    一.选择 Python2 还是 Python3?当然是全都要 Python3 虽是未来,不过 Python2 的用户群体仍然膨大,网上有大量优良的项目和模块可供使用,遇到问题也基本可以找到解决方法,推 ...

  2. Windows上Python2.7安装Scrapy过程

    需要执行: pip install scrapy pip install requests 在Windows下用pip安装Scrapy报如下错误,看错误提示就知道去http://aka.ms/vcpy ...

  3. Windows上Python2与Python3共存

    首先安装好python2与python3版本 因为安装顺序的不同,所以系统默认的版本也不同.如果先安装的是python,那么系统默认的就是python2 如果根据需求需要使用不同的版本,可以使用py命 ...

  4. Windows上python2和python3共存

    1.找到python2安装目录 2.将应用程序中的python重命名为python2,或自行定义. 3.为python2设置系统变量中的path变量.注意,记得加上英文的分号. 验证:输入python ...

  5. windows上安装python2和python3虚拟环境

    一.windows上安装 1.安装python 分别安装了Python2和Python3 python3.7默认安装目录 C:\Users\Administrator\AppData\Local\Pr ...

  6. windows上,python安装非官方包,提示error: Unable to find vcvarsall.bat

    在windows机器上安装python非官方包,如果环境只是用于开发,不作任何测试的话,最好的解决办法是: 在Linux上pip安装好之后,把python根目录lib/python3.6/site-p ...

  7. 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!

    今年微软Build 2016大会最让开发人员兴奋的消息之一,就是在Windows上可以原生运行Linux bash,对开发人员来说,这是一个喜闻乐见的消息. 1 安装 你必须安装开发者预览版本,才能使 ...

  8. [ZZ] 在windows上编译Mesa3d opengl32库

    在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...

  9. windows上安装apache python mod_python

    综述:   windows上安装apache python mod_python的例子.教程甚至图解都不少:但作为新手还是会出错,而且一时无法快速排解. 在此笔者将根据自己的实践经验,给出几个需要注意 ...

随机推荐

  1. excel导出字符串

     "style", "vnd.ms-excel.numberformat: @;" 

  2. 项目中用到RouteTable,发布到IIS7中无法访问

    项目中用到RouteTable,发布到IIS7中,访问之后没有任何反应,google半天终于找到了解决方法,就是要把iis的“HTTP重定向”功能打开

  3. sql 删除重复数据且保留其中一条 用sql 关键字:with ROW_NUMBER

    --1.建立表:Coursecreate table Course( ID int identity(1,1),--ID Student varchar(20) ,--学生 Sub varchar(2 ...

  4. MVVM模式下弹出窗体

    原地址:http://www.cnblogs.com/yk250/p/5773425.html 在mvvm模式下弹出窗体,有使用接口模式传入参数new一个对象的,还有的是继承于一个window,然后在 ...

  5. spring web mvc中遇到的错误以及学习小记(持续记录)

    错误:cvc-complex-type.2.4.a: 发现了以元素 'init-param' 开头的无效内容.应以 '{"http://java.sun.com/xml/ns/javaee& ...

  6. Hibernate部署问题总结

    出现未知实体类(- org.hibernate.MappingException: Unknown entity),找不到cfg.xml包 (org.hibernate.internal.util.c ...

  7. Orcle学习(一)

    exists"和"in"的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ...

  8. Python小知识

    列表解析 from random import randint data =[randint(-10,10) for _ in range(10)] 1.[x for x in data if x & ...

  9. html尖角提示框的实现

    <style type="text/css">        .box {            background-color: #bebf22;          ...

  10. android Spinner的简单用法

    上代码: spinner = (Spinner) findViewById(R.id.spinner); tv = (TextView) findViewById(R.id.tv); final Ar ...