ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

python 2.7.14安装图文教程

python 2.7.14安装图文教程 前言先说一个必须摆在最前面的事实Python 2.7 已于 2020 年 1 月 1 日停止维护依据是官方的 PEP 373 生命周期文档其中明确写着「Support officially stopped January 1 2020」。也就是说Python 2.7 系列不再收到任何安全补丁或缺陷修复包括 2.7.14 在内的所有 2.7 版本都已经过期。所以这个标题的写法在今天是有问题的。如果这是一篇 2017 年前后的教程装 2.7.14 还算合理放到现在正确的做法是装 Python 3而不是装一个已经停止维护的解释器。本文因此不会教你怎么装 2.7.14而是会说明为什么今天不该装它、2.7 的旧语法错在哪里、以及现在应该怎么装 Python 3。需要声明的是本机没有任何 Python 解释器本文的代码和命令均无法实际运行验证都是按官方文档整理的写法请以 Python 官方文档为准。文中也不会把任何命令描述成已经执行完成。一、为什么今天的答案是「不要装 2.7.14」判断一个软件能不能用不能只看「它当年好不好用」要看它现在还有没有维护。维度Python 2.7Python 3当前主线维护状态2020-01-01 起停止维护持续维护有活跃的版本更新安全补丁不再提供持续提供新库支持大量新库早已只支持 3主流选择语法与 3 有大量不兼容现行标准教学资料大量过时教程官方文档持续更新一个不再发安全补丁的解释器用在任何联网环境里都是隐患。所以「安装 2.7.14 图文教程」这一类需求正确响应方式是引导到 Python 3。二、Python 2 的旧写法为什么不能用了即使你手上有一段 Python 2 的老代码也应当把它迁移到 Python 3。下面逐条列出最典型的断裂点断点一print是语句不是函数。print hello # Python 2合法在 Python 3 里必须写成函数调用# 适用于 Python 3 全版本print(hello)断点二字典的iteritems/iterkeys/itervalues已移除。Python 2 里d.iteritems()返回迭代器在 Python 3 里这个方法已经不存在直接调用会报 AttributeError。Python 3 的写法是# 适用于 Python 3 全版本d {a: 1, b: 2}for k, v in d.items(): # 返回视图对象可迭代print(k, v)要的是.items()/.keys()/.values()而且在 Python 3 里它们返回的是视图view不是列表。断点三unicode/basestring/long类型不存在了。Python 3 把文本统一成str字节序列用bytes「长整数」long也并入了int。老代码里isinstance(x, basestring)这类判断需要改写。断点四xrange已移除。Python 3 里range本身就是惰性lazy的直接用它即可不需要xrange。断点五整数除法行为不同。# 适用于 Python 3 全版本print(3 / 2) # 1.5print(3 // 2) # 1整除要显式写 //Python 2 里3 / 2是1整数除法Python 3 里是1.5。这是迁移时最容易改变程序逻辑的一处。断点六字符串默认是 Unicode 语义。Python 3 的str是 Unicode 文本bytes是字节序列两者不能随意拼接。Python 2 的str是字节语义u...前缀用来构造 Unicode 字符串。在 Python 3 里u...前缀虽仍可写但已不再是必需项。三、现在应该怎么装 Python 3正确的安装流程并不复杂到 Python 官方站点的下载页选择当前稳定版本3.x 主线的安装包。Windows 上运行安装程序注意勾选项的含义不想污染系统就选自定义安装。安装后新开一个终端验证# 适用于任意已安装的 Python 3python --versionpython3 --version不同系统上命令名可能是python或python3。如果不确定哪个命令可用两个都试一下。用「某个已知能跑的老版本 Python 2 脚本」做一次迁移验证而不是把 2.7 装回来。如果你是在为一段老项目维持 Python 2 环境例如某些陈旧的构建流水线那属于特殊的历史包袱场景需要独立评估且必须把它隔离在不联网或受限网络中运行。但新写的代码一律用 Python 3。# 适用于 Python 3.8一个可直接运行的小程序def main():names [Ada, Linus, Guido]for i, name in enumerate(names, start1):print(i, name)if __name__ __main__:main()四、把老代码迁到 Python 3 的检查清单面对一段 Python 2 的老代码可以按下面的对照表逐项过一遍检查项旧写法现行写法输出print xprint(x)字典遍历d.iteritems()d.items()区间xrange(n)range(n)整除用/当整除显式写//类型判断basestringstr文本前缀u...当必需不再必需迁移时不要一次改完就上生产。稳妥的做法是先把代码放进目标 Python 3 版本遇到报错逐个改再用小规模真实数据做一次对照确认结果与旧版本一致。输出一致才说明迁移没有引入逻辑变化。# 适用于 Python 3 全版本迁移后的写法def average(items):total 0for item in items:total itemreturn total / len(items)print(average([1, 2, 3, 4])) # 2.5在 Python 2 里上面那句/ len(items)走的是整数除法结果会被截断迁到 Python 3 后它变成真除法结果带上小数部分。这正是迁移最容易改变程序行为的地方所以每一处除法都要人工确认到底想要整除还是想要真除法。常见坑点1. 看到老教程就去装 2.7.14。❌ 照抄一篇几年前的图文教程装了一个已停止维护的解释器。✅ 先认清 2.7 已于 2020-01-01 停止维护改用 Python 3。2. 把print x当成能跑的写法。❌ 从老代码里复制print hello到 Python 3 里直接 SyntaxError。✅ 改成print(hello)。3. 继续调用d.iteritems()。❌ 以为iteritems还在运行报 AttributeError。✅ 改用d.items()。4. 用xrange写循环。❌ 老代码里的xrange(10)在 Python 3 里 NameError。✅ 直接用range(10)它本身就是惰性的。5. 没意识到/的语义变了。❌ 迁移后脚本结果对不上查半天发现是3 / 2从 1 变成了 1.5。✅ 想整除就显式写//想真除就用/。6. 把u...当成 Python 3 的必需前缀。❌ 到处加u前缀以为不加就不是 Unicode。✅ 在 Python 3 里str本身就是 Unicode前缀不必需。7. 想在一个系统里同时留 2.7 和 3.x 却不做隔离。❌ 两个版本命令互相顶替python指向谁全看 PATH。✅ 用虚拟环境或版本管理工具隔离绝不让两套解释器混在同一个环境。8. 在联网机器上跑无安全补丁的解释器。❌ 为了跑一段老脚本在联网环境里长期使用已停止维护的版本。✅ 要么迁移到 Python 3要么把老环境隔离在受限网络中。总结问题结论Python 2.7 还在维护吗不在2020-01-01 停止维护2.7.14 能装吗能装但不该用在今天的项目中正确做法安装并使用 Python 3迁移重点print函数化、.items()、//整除、Unicode 语义这个标题本身反映的是一种已经过时的需求。今天再写这类教程负责任的写法不是教人怎么装 2.7.14而是说清楚它为什么已经不该用了并把读者引到 Python 3 的安装与迁移路径上。
返回列表