一键下载Python各版本中的最新版

一、背景需求

下载Python的安装包非常简单,只需要去官网就可以了:https://www.python.org/downloads/windows/

但是有时候你可能需要环境测试,需要安装很多版本的Python。

一个一个找倒是也可以,但是我做了个自动筛选的脚本,直接汇总找出各子版本中的最高版本号的下载地址:

import os
import re
from urllib.request import urlopen
from pprint import pprintimport packaging.version as pvdef version(url):ver = re.search('python-(\d[\d\.abcr]+\d)', url, re.I).group(1)return pv.parse(ver)pattern = r'<a href="(https://www.python.org/[^"]+/python-[^"]*?)">'
white = ['exe', 'msi']
black = ['embed', 'arm64', 'webinstall']url = 'https://www.python.org/downloads/windows/'
response = urlopen(url)
text = response.read().decode()M1 = re.findall(pattern, text, re.I)
M2 = sorted((version(url), url) for url in M1)
M3 = [(ver, url) for ver, url in M2 if any(word in url for word in white) and not any(word in url for word in black)]keep = {}
for ver, url in M3:ver2 = ver.release[:2]if ver2 not in keep or ver > keep[ver2]:keep[ver2] = verM4 = [(ver, url) for ver, url in M3 if ver in keep.values()]for ver, url in M4:# print(f'{str(ver):12}: {url}')print(url)

其中需要安装一个版本号解析包,使用以下命令安装:

pip install packaging

二、程序步骤

简单介绍程序的执行步骤,可以根据自己的需求进行修改:

  1. 读取Python官网Windows安装包页面源代码。
  2. 匹配出所有可访问的下载路径。
  3. 用正则表达式取出程序文件名中的版本号,其中Python的版本号存在2位和3位数字、和a/b/rc3中预发布版本。
  4. 用packaging库解析版本号,并根据版本号排序。
  5. 按照黑名单(black)和白名单(white)模式筛选,其中只保留 exemsi 格式的附件,并排除嵌入式版、ARM版、和网络版安装包。
  6. 使用一个字典(keep)保存Python各个版本中的最高小版本号,遍历所有版本号并不断更新最大值,即可得到Python各版本的最高版本号。
  7. 按照最高版本号取出符合条件的下载地址。
  8. 打印输出匹配版本号和下载链接。

下载的事情就交给更专业的软件吧,比如迅雷什么的。

三、下载地址

2023年11月26日运行结果,可以使用迅雷下载:

https://www.python.org/ftp/python/2.0.1/Python-2.0.1.exe
https://www.python.org/ftp/python/2.1.3/Python-2.1.3.exe
https://www.python.org/ftp/python/2.2.3/Python-2.2.3.exe
https://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe
https://www.python.org/ftp/python/2.4.4/python-2.4.4.msi
https://www.python.org/ftp/python/2.5.4/python-2.5.4.amd64.msi
https://www.python.org/ftp/python/2.5.4/python-2.5.4.msi
https://www.python.org/ftp/python/2.6.6/python-2.6.6.amd64.msi
https://www.python.org/ftp/python/2.6.6/python-2.6.6.msi
https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi
https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi
https://www.python.org/ftp/python/3.0.1/python-3.0.1.amd64.msi
https://www.python.org/ftp/python/3.0.1/python-3.0.1.msi
https://www.python.org/ftp/python/3.1.4/python-3.1.4.amd64.msi
https://www.python.org/ftp/python/3.1.4/python-3.1.4.msi
https://www.python.org/ftp/python/3.2.5/python-3.2.5.amd64.msi
https://www.python.org/ftp/python/3.2.5/python-3.2.5.msi
https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.amd64.msi
https://www.python.org/ftp/python/3.3.5/python-3.3.5rc1.msi
https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64.msi
https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi
https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe
https://www.python.org/ftp/python/3.5.4/python-3.5.4.exe
https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe
https://www.python.org/ftp/python/3.6.8/python-3.6.8.exe
https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64.exe
https://www.python.org/ftp/python/3.7.9/python-3.7.9.exe
https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe
https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe
https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe
https://www.python.org/ftp/python/3.9.13/python-3.9.13.exe
https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe
https://www.python.org/ftp/python/3.10.11/python-3.10.11.exe
https://www.python.org/ftp/python/3.11.6/python-3.11.6-amd64.exe
https://www.python.org/ftp/python/3.11.6/python-3.11.6.exe
https://www.python.org/ftp/python/3.12.0/python-3.12.0-amd64.exe
https://www.python.org/ftp/python/3.12.0/python-3.12.0.exe
https://www.python.org/ftp/python/3.13.0/python-3.13.0a2-amd64.exe
https://www.python.org/ftp/python/3.13.0/python-3.13.0a2.exe

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka-Consumer

Kafka消费者 消费者 与生产者对应的是消费者&#xff0c;应用程序可以通过KafkaConsumer来订阅主题&#xff0c;并从订阅的主题中拉取消息。 消费者与消费者组 Kafka的消费者&#xff08;Consumer&#xff09;负责订阅Kafka中的主题&#xff08;Topic&#xff09;&#xff…

Web 安全之证书透明(Certificate Transparency)详解

目录 证书透明性的概念 数字证书和颁发机构 证书透明的起源 证书透明的工作原理 证书透明的实现方法 证书透明的优点 浏览器和客户端对证书透明的支持情况 小结 证书透明&#xff08;Certificate Transparency, CT&#xff09;是网络安全领域中的一个重要概念&#xff…

车载以太网-数据链路层-MAC

文章目录 车载以太网MAC(Media Access Control)车载以太网MAC帧格式以太网MAC帧报文示例车载以太网MAC层测试内容车载以太网MAC(Media Access Control) 车载以太网MAC(Media Access Control)是一种用于车载通信系统的以太网硬件地址,用于在物理层上识别和管理数据包的传…

5 个适用于 Windows 的顶级免费数据恢复软件

对于计算机来说&#xff0c;最重要的是用户数据。除了您的数据之外&#xff0c;有关计算机的其他所有内容都是可替换的。这三个是数据丢失的最常见原因&#xff1a; 文件/文件夹删除丢失分区分区损坏 文件/文件夹删除 文件/文件夹删除是最常见的数据丢失类型。大多数时候&am…

《微信小程序开发从入门到实战》学习三十一

3.4 开发参与投票页面 3.4.9 显示投票结果 在实际使用中&#xff0c;一个用户不能对同一个投票进行重复提交&#xff0c;因此需要向服务器端提交投票结果和提交用户ID。另外页面&#xff0c;需要完善。用户提交完投票后 &#xff0c;还需要显示投票目前的结果&#xff0c;提交…

C语言进阶之笔试题详解(1)

引言&#xff1a; 对指针知识进行简单的回顾&#xff0c;然后再完成笔试题。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言&#xff1a; 知识简单回顾 指针是什么 指针变…

1 时间序列模型入门: LSTM

0 前言 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种用于处理序列数据的神经网络。相比一般的神经网络来说&#xff0c;他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义&#xff0c;RNN就能够很好…

2023-3年CSDN创作纪念日

机缘 今天开开心心出门去上班&#xff0c;就收到了一个csdn私信&#xff0c;打开一看说是给我惊喜来着&#xff0c;我心想csdn还能给惊喜&#xff1f;以为是有什么奖品或者周边之类的&#xff0c;结果什么也没有&#xff0c;打开就是一份信&#x1f602;。 也挺不错的&#xf…

Python基础入门例程67-NP67 遍历字典(字典)

最近的博文: Python基础入门例程66-NP66 增加元组的长度(元组)-CSDN博客 Python基础入门例程65-NP65 名单中出现过的人(元组)-CSDN博客 Python基础入门例程64-NP64 输出前三同学的成绩(元组)-CSDN博客 目录 最近的博文: 描述

1.6 C语言之数组概述

1.6 C语言之数组概述 一、数组二、练习 一、数组 所谓数组&#xff0c;就是内存中一片连续的空间&#xff0c;可以用来存储一组同类型的数据 数组有下标&#xff0c;从0开始&#xff0c;可以理解为是给数组中的元素编号&#xff0c;便于后续寻址访问 我们来编写一个程序&…

SparkSQL之Optimized LogicalPlan生成过程

经过Analyzer的处理&#xff0c;Unresolved LogicalPlan已经解析成为Analyzed LogicalPlan。Analyzed LogicalPlan中自底向上节点分别对应Relation、Subquery、Filter和Project算子。   Analyzed LogicalPlan基本上是根据Unresolved LogicalPlan一对一转换过来的&#xff0c;…

量子计算的世界:探索叠加态与Python编程

1.量子计算概述 量子计算是一种利用量子力学的原理来进行信息处理的技术。它与传统的计算机科学有着根本的不同&#xff0c;主要体现在以下几个方面&#xff1a; 1.基本原理 量子比特&#xff08;Qubit&#xff09;&#xff1a; 传统计算机使用比特作为信息的基本单位&#x…

针对哈希冲突的解决方法

了解哈希表和哈希冲突是什么 哈希表&#xff1a;是一种实现关联数组抽象数据类型的数据结构&#xff0c;这种结构可以将关键码映射到给定值。简单来说哈希表&#xff08;key-value&#xff09;之间存在一个映射关系&#xff0c;是键值对的关系&#xff0c;一个键对应一个值。 …

foobar2000 突然无法正常输出DSD信号

之前一直在用foobar2000加外置dac听音乐&#xff0c;有一天突然发现听dsd的时候&#xff0c;dac面板显示输出的是PCM格式信号&#xff0c;而不是DSD信号&#xff0c;这让我觉得很奇怪&#xff0c;反复折腾了几次&#xff0c;卸载安装驱动什么的&#xff0c;依然如此&#xff0c…

java协同过滤算法 springboot+vue游戏推荐系统

随着人们生活质量的不断提高以及个人电脑和网络的普及&#xff0c;人们的业余生活质量要求也在不断提高&#xff0c;选择一款好玩&#xff0c;精美&#xff0c;画面和音质&#xff0c;品质优良的休闲游戏已经成为一种流行的休闲方式。可以说在人们的日常生活中&#xff0c;除了…

k8s集群资源监控工具metrics-server安装

1、下载镜像 docker pull swr.cn-east-2.myhuaweicloud.com/kuboard-dependency/metrics-server:v0.6.22、在任一一个主节点上创建角色&#xff0c;执行下面语句 kubectl create clusterrolebinding kube-proxy-cluster-admin --clusterrolecluster-admin --usersystem:kube-…

HarmonyOS(四)—— 如何创建自定义组件

前言 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑与UI分离&…

mobiusp 正在创作乐曲

题目描述 mobiusp 创作了一首 n 个音符的乐曲&#xff0c;其中第 iii 个音符的音高为 ai​ &#xff0c;但是 mobiusp 对以前的创作风格和黑历史很不满意&#xff0c;他希望所有音符的音高 ai 都是 1∼7 的正整数&#xff0c;且相邻的音高差不超过 k 。 现在他要修改若干个音符…

Int8量化算子在移动端CPU的性能优化

本文介绍了Depthwise Convolution 的Int8算子在移动端CPU上的性能优化方案。ARM架构的升级和相应指令集的更新不断提高移动端各算子的性能上限&#xff0c;结合数据重排和Sdot指令能给DepthwiseConv量化算子的性能带来较大提升。 背景 MNN对ConvolutionDepthwise Int8量化算子在…