【python】python的基础环境搭建
一、Python解释器这么多,初学者该如何选择?
Python 是一门解释型语言,Python 代码要想运行,必须借助 Python 解释器。
本质上,Python 解释器就是一个程序,如果我们想执行 Python 代码,必须先运行 Python 解释器,由它读取我们写好的代码,再转换(翻译)成计算机能识别的机器指令。
Python 解释器是开源的,任何志同道合的组织或个人都可以根据自己需求修改它,做出自己的解释器。本套 Python 教程使用的是官方推荐的用 C 语言实现的 Python 解释器,又称 CPython。您可以在 Python 官方网站(https://www.python.org/)免费下载它。
CPython 的使用范围是最广的,平时我们讨论的 Python 解释器指的就是 CPython,如果你刚刚接触 Python,我也建议你使用 CPython。
当然除了 CPython 外,还有很多款 Python 解释器,它们分别采用不同的编程语言实现,可以运行在不同的平台上,比如用 Java 语言实现的 Python(称为 Jython),用 .net 实现的 Python(称为 IronPython)等等。
相比于官方解释器 CPython 来说,这些解释器诞生较晚,它们旨在不同的生产环境中推广使用 Python。虽然有些解释器只是玩具项目或实验,但大部分是为了解决某些实际问题而创建的,这些问题要么使用 CPython 无法解决,要么需要耗费程序员巨大的精力,比如说:
- 在嵌入式系统上运行 Python 代码;
- 与运行框架(如 Java 或 .NET)或其他语言做代码集成;
- 在 Web 浏览器上运行 Python 代码。
接下来,我就给大家介绍几种最常用的 Python 解释器以及它们各自的特点。
1.1、CPython
CPython 中的 "C" 指的就是 C 语言,意味着 CPython 解释器是完全用 C 语言编写实现的。
当我们从 Python 官网上下载并安装好 Python 3.x 后,除了会获得 CPython 解释器,还会获得 Python 程序运行所依赖的标准库模块。注意,CPython 解释器是用纯 C 语言编写的,但很多标准库模块是用纯 Python 语句编写的,还有一些是 C 和 Python 组合编写的。
CPython 是使用最广泛的一款 Python 解释器,关于 CPython 的下载和安装,我们会在第二章给大家做详细讲解。
1.2、Jython
Jython 是一款运行在 Java 平台上的 Python 解释器,可以将 Python 代码转换为 Java 字节码,让开发人员在 Python 模块中可以无缝衔接地使用 Java 类。
Jython 和 CPython 的主要区别有:
- 采用 Java 垃圾回收机制,而不是引用计数。
- 没有全局解释器锁(GlobakInterpreter Lock,GIL),在多线程应用中可以充分利用多个内核。
Jython 的主要缺点是缺少对 CPython 扩展 API 的支持,因此用 C 语言编写的 Python 扩展在 Jython 中无法运行。这种情况未来可能会发生改变,因为 Jython 3.x 计划支持 CPython 扩展 API。
Jython 允许人们在复杂应用系统(比如 J2EE)中使用 Python 作为顶层脚本语言,它还将 Java 应用引入到 Python 中,比如说在 Python 程序中可以使用 Apache Jackrabbit(这是一个基于 JCR 的内容仓库 API)。
Jython 最新可用的版本是 Jython 2.7,对应的是 Python 2.7 版,几乎实现了 Python 所有的核心标准库,Jython 3.x 版正在开发中。
1.3、IronPython
IronPython 是运行在 .Net 平台上的一款 Python 解释器,可以直接将 Python 代码转换为 .Net 的字节码。
IronPython 是将 Python 引入到 .NET 框架中,这个项目受到了微软的大力支持,因为 IronPython 的主要开发人员都在微软工作。
同时,微软还提供了一套免费的开发工具,名为 PTVS(Python Tools for Visual Studio,用于Visual Studio 的 Python 工具),可以将 Visual Studio 转换为成熟的 Python IDE,是作为 Visual Studio 的插件发布的,在 GitHub 可以找到其开源代码。
除了 Java,.NET社区是最大的开发者社区之一。毫不夸张地说,IronPython 为推广 Python 语言做出了非常重要的贡献。
虽然 .NET 主要在微软 Windows 系统上运行,但是 IronPython 也可以在 Mac OS X 和 Linux 系统上运行,这一点要感谢 Mono,这是一个跨平台的开源 .NET 实现。
与 CPython 相比,IronPython 的主要区别或优点如下:
- 与 Jython 类似,没有全局解释器锁(Global Interpreter Lock,GIL),在多线程应用中可以充分利用多个内核。
- 用 C# 和其他 .NET 语言编写的代码可以轻松集成到 IronPython 中,反之亦然。
- 通过微软 Silverlight 插件,在所有主流 Web 浏览器中都可以运行。
IronPython 的缺点和 Jython 非常类似,也不支持 C/Python 扩展 API。对于想要使用基于 C 扩展的 Python 包(如 NumPy)的开发人员来说,这一点很重要。
IronPython 最新的稳定版本是 2.7.12,能够与 Python 2.7 很好的兼容。2022 年 4 月末,IronPython 3.4 发布,实现了 Python 2 到 Python 3 版本的重大跨越。
1.4、PyPy
PyPy 是一款用 Python 编写的 Python 解释器,最大的特点就是执行 Python 代码的速度快。
PyPy 采用了 JIT(Just-in-Time)技术,可以对 Python 代码进行动态编译,显著提高 Python 代码的执行效率,但在以下两种场景,JIT 技术的优势也很难得到展现:
- 如果整个程序运行只有几秒钟,JIT 技术的加速效率不会很明显;
- 如果大部分的运行时间都花费在执行标准库中的 C 语言代码上,而不是执行 Python 代码,JIT 技术也无济于事。
尤其在长时间执行 Python 代码的场景中,PyPy 执行速度快的特点会体现得淋漓尽致
PyPy 和 CPython 的主要区别有以下几个方面:
- 使用垃圾回收,而不是引用计数。
- 采用了 JIT 技术,可以显著提高性能。
- 借鉴了 Stackless Python 在应用层的“无栈”特性。
和其它的 Python 解释器类似,PyPy 也缺乏对 C/Python 扩展 API 的完全官方支持。但它至少通过 CPyExt 子系统为 C 扩展提供了某种程度的支持,虽然文档不完整,功能也尚未完善。此外,社区正在努力将 NumPy 迁移到 PyPy 中。
目前,PyPy 兼容了 Python2.7.18 和 Python 3.7.10,支持大多数常用的 Python 标准库模块。绝大部分 Python 代码都可以在 PyPy 下运行,但是 PyPy 和 CPython 的差异可能会导致 Python 代码在两种解释器下的执行结果不一样。
1.5、Stackless Python
Stackless Python 是 CPython 的增强版,对 CPython 做了一些修改,添加了一些新的功能。
Stackless Python 可以直译为“无栈的 Python”“无栈”指的是不再用 "堆栈" 的思想运行 Python 代码,而是用 tasklet(微线程)代替堆栈。和普通线程相比,操作系统上下文切换和任务调度微线程的开销更小,既轻量化又节约资源。
所谓堆栈思想,以 C 语言为例,程序执行时会将函数逐个入栈,函数执行完后依次出栈,函数进出栈遵循“后进先出”的原则。
Stackless Python 算不上是有名的 Python 解释器,但它的实现思想对编程语言社区有很大的影响。Stackless Python 最新可用的版本是 2.7.9 和 3.3.5,分别实现的是 Python 2.7 和 3.4。
总结
Python 解释器有很多版本,但使用最广泛的还是 CPython,本教程讲解 Python 使用的也是 CPython。
作为初学者,大家直接用 Python 官方推荐的 CPython 即可,丝毫不用迟疑,至于其它版本的 Python 解释器,简单了解一下即可。
二、Python的基础环境搭建
2.1、Linux(Ubuntu)系统安装Python
Linux 系统是为编程而生的,因此绝大多数的 Linux 发行版(Ubuntu、CentOS 等)都默认自带了 Python。有的 Linux 发行版甚至还会自带两个版本的 Python,例如最新版的 Ubuntu 会自带 Python 2.x 和 Python 3.x。
打开 Linux 发行版内置的终端(Terminal),输入python
命令就可以检测是否安装了 Python,以及安装了哪个版本,如下所示:
[xxshang@VM-212-227-tencentos ~]$ python Python 3.6.8 (default, Dec 28 2023, 15:21:35) [GCC 8.5.0 20210514 (TencentOS 8.5.0-18)] on linux Type "help", "copyright", "credits" or "license" for more information.
可以看到,python
命令能够正常运行,并输出了 Python 的版本信息,这表明当前的 Linux 发行版已经自带了 Python 2.7.5。
另外,执行结果最后出现了 Python 命令提示符>>>
,这意味着我们进入了 Python 交互式编程环境,可以在这里直接输入代码并查看运行结果,如下所示:
[xxshang@VM-212-227-tencentos ~]$ python Python 3.6.8 (default, Dec 28 2023, 15:21:35) [GCC 8.5.0 20210514 (TencentOS 8.5.0-18)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> print("C语言中文网的网址是:http://c.biancheng.net") C语言中文网的网址是:http://c.biancheng.net >>> a=100 >>> b=4 >>> a*b 400 >>> exit()
大部分的 Linux 发行版会自带 Python 2.x,但是不一定自带 Python 3.x,要想检测当前 Linux 发行版是否安装了 Python 3.x,可以在终端(Terminal)输入python3
命令,如下所示:
[xxshang@VM-212-227-tencentos ~]$ python3 Python 3.6.8 (default, Dec 28 2023, 15:21:35) [GCC 8.5.0 20210514 (TencentOS 8.5.0-18)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
如果python3
命令运行成功,并出现 Python 提示符>>>
,则表明当前 Linux 发行版已经安装了 Python 3 开发环境,只需执行python3
命令就可以启动 Python 3 开发环境。
如果当前 Linux 发行版没有安装 Python 3,或者你觉得现有的 Python 3 版本不够新,那么就需要更新 Python 版本。本节我们以 Ubuntu 为例来进行演示。
更新 Python 版本
在 Ubuntu 终端执行以下两条命令即可更新 Python 版本:
$sudo apt-get update $sudo apt-get install python3.8
对命令的说明:
- 第一条命令用来指定更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 所列出的源地址,这样能够保证获得最新的安装包。
- 第二条命令用来指定安装 Python 3.8,这是目前最新的 Python 版本。
等待以上两条命令执行完成,再次在终端输入python3
命令,就可以看到 Python 交互式编程环境已经更新到 Python 3.8。
重新安装 Python
以上更新方法仅在 Ubuntu 已经安装 Python 的情况下才有效,如果你的 Ubuntu 中没有 Python 环境,或者你想重新安装,那么就得到官网下载源代码,然后自己编译。
1) 下载源代码
Python 官方下载地址:https://www.python.org/downloads/
打开链接,可以看到各个版本的 Python:
点击上图中的版本号或者“Download”按钮进入对应版本的下载页面,滚动到最后即可看到各个平台的 Python 安装包。
在“Gzipped source tarball”处单击鼠标右键,从弹出菜单中选择“复制链接地址”,即可得到.tgz
格式的源码压缩包地址。
然后执行以下命令:
$ wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
解压源码包:
$ tar -zxvf Python-3.8.1.tgz
2) 编译
使用 make 工具进行编译:
$ ./configure --prefix=/usr/local
$ make&&sudo make install
这里的--prefix=/usr/local
用于指定安装目录(建议指定)。如果不指定,就会使用默认的安装目录。
经过以上几个命令,我们就安装好了 Python,这时就可以进入终端,输入 Python 指令,验证是否已安装成功。
小技巧
python
命令默认调用的是 Python 2.x 开发环境,如果你习惯使用 Python 3.x,感觉每次输入python3
命令有点麻烦,那么你可以修改配置,让python
命令转而调用 Python 3.x 开发环境。具体命令如下:$sudo unlink /usr/bin/python
$sudo ln -s /usr/bin/python3.8 /usr/bin/python
上述命令执行完成以后,再次在终端输入
python
命令,进入的就是 Python 3.8 的交互式开发环境了。2.2、Mac OS安装Python环境
和 Linux 发行版类似,最新版的 Mac OS X 也会默认自带 Python 2.x。
我们可以在终端(Terminal)窗口中输入python
命令来检测是否安装了 Python 开发环境,以及安装了哪个版本,如下所示:
c.biancheng.net:~ mozhiyan$ python Python 2.7.10 (default, Jul 30 2016, 18:31:42) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
个人电脑自测结果
shangxiaofei@XXSHANG-MC0 ~ % python
zsh: command not found: python
shangxiaofei@XXSHANG-MC0 ~ %
可以看到,python
命令能够正常运行,并输出了 Python 的版本信息,这表明当前的 Mac OS X 系统已经自带了 Python 2.7.10。python
命令默认指向 Python 2.x 开发环境,如果想检测当前 Mac OS X 是否安装了 Python 3.x,可以在终端(Terminal)窗口中输入python3
命令:
- 如果系统提示
command not found
,则说明没有安装 Python 3.x; - 如果
python3
命令运行成功,并显示出版本信息,则说明已经安装了 Python 3.x。
对于没有安装 Python 3.x 的 Mac OS X,想要安装也非常简单,用户只需要下载安装包,然后一直“下一步”即可,这和 Windows 安装 Python 的过程是非常类似的。
Mac OS X 安装 Python 3.x
Python 官方下载地址:https://www.python.org/downloads/
打开链接,可以看到各个版本的 Python:
点击上图中的版本号或者“Download”按钮进入对应版本的下载页面,滚动到最后即可看到各个平台的 Python 安装包。
python-3.12.4-macos11.pkg
macOS 64-bit installer
即为 Mac OS X 系统的 Python 安装包。点击该链接,下载完成后得到一个 python-3.8.1-macosx10.9.pkg 安装包。
双击 python-3.8.1-macosx10.9.pkg 就进入了 Python 安装向导,然后按照向导一步一步向下安装,一切保持默认即可。
安装完成以后,你的 Mac OS X 上将同时存在 Python 3.x 和 Python 2.x 的运行环境,在终端(Terminal)输入python
命令将进入 Python 2.x 开发环境,在终端(Terminal)输入python3
命令将进入 Python 3.x 开发环境。
shangxiaofei@XXSHANG-MC0 ~ % python3 Python 3.12.4 (v3.12.4:8e8a4baf65, Jun 6 2024, 17:33:18) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
这里安装完向导后,还需要针对这个点击一下安装,才能生效
与 Windows 系统类似,Mac OS 下的 Python 3.x 也会自带 IDLE 简易开发工具,你可以在程序列表中找到它。