0.导语

在学习Python的过程中,大家肯定会遇到pip安装失败的问题,要么是因为网速问题,要么是因为win系统上与vs绑定,必须要装vs等一些系列问题,而这些问题有个很关键的解决办法,那就是直接下载相应的whl包来安装。

如果有一个能够支持搜索查找及下载whl包的脚本,那是不是很棒哦,果不其然,可以做到,作者光城写下这个脚本,并做了测试,今天来总结一下,欢迎大家star,fork,转发,收藏本篇文章!

光城同学的源码地址

https://github.com/Light-City/AutoDownloadWhl

本次脚本我将它命名为:Whl自助搜索下载器

实现了如下功能:

  • 支持检索

  • 支持查找

  • 支持下载

  • 单、多文件下载

2.如何使用及功能演示

2.1 如何使用

运行脚本需要:

  • requests、lxml、os库

  • curl或axel命令

win系统的直接下载win版本的按照网上配置即可!

linux系统与mac系统可用yum 或 apt 或 brew等来进行安装!

复制源码地址并下载脚本,运行脚本即可:

python AutoDownloadWhl.py

2.2 功能演示

  • 所有包信息展示

  • 适应平台whl包

  • 多包下载

完整演示如下:

3.代码详解

3.1 封装

封装包地址与下载地址:

class AutoDownWhl():def __init__(self):# 包地址self.url = 'https://www.lfd.uci.edu/~gohlke/pythonlibs/'# 下载地址self.base_url = 'https://download.lfd.uci.edu/pythonlibs/r5uhg2lo/'# 模拟浏览器self.headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'}

3.2 获取选择器与包名

解析源码与获取包名:

# 获取选择器与包名
def getLib(self):raw_text = requests.get(self.url, headers=self.headers).contentseletor = etree.HTML(raw_text)lib_names = seletor.xpath('//ul[@class="pylibs"]//li//strong//text()')return seletor, lib_names

3.3 输出所有包名

一行15个包名打印:

# 输出所有包名def print_AllLib(self, lib_names):print('\n------------------共查找到' + str(len(lib_names)) + '个包------------------\n')for i in range(len(lib_names)):if i and i % 15 == 0:print('\n')print(lib_names[i], end=' ')

3.4 搜索与下载

只摘取了核心代码,下载采用调用系统命令curl与axel,请在自己的系统上安装这两个其中之一下载!

def searchDown(self, downloadMethod='axel'):# 此部分代码只摘取核心部分if int(lib_sequence) <= max:detail_name = detail_libs[int(lib_sequence) - 1].strip().replace('‑', '-')download_url = self.base_url + detail_nameprint('\n\n输入包名正确,下载地址:' + download_url + '\n')print("---------------------------------------开始下载---------------------------------------\n")if downloadMethod == 'curl':cmd = 'curl -O %s' % download_urlelse:cmd = 'axel %s' % download_urlwhile True:cmd_res = os.system(cmd)if cmd_res == 0:print('下载成功!\n')breakelse:print('下载失败!\n')is_try = input('是否重试下载(y|n): ')if is_try == 'y' or is_try == 'Y':continueelse:breakelse:print("\n \033[1;31m 输入序号不符合要求,请重新输入! \033[0m \n")

3.5 调用

采用axel下载:

dw = AutoDownWhl()
dw.searchDown(downloadMethod='axel')

请关注和分享↓↓↓ 

机器学习初学者

QQ群:554839127

(注意:本站有6个qq群,加入过任何一个的不需要再加)

往期精彩回顾

  • 良心推荐:机器学习入门资料汇总及学习建议(2018版)

  • 黄海广博士的github镜像下载(机器学习及深度学习资源)

  • 吴恩达老师的机器学习和深度学习课程笔记打印版

  • 机器学习小抄-(像背托福单词一样理解机器学习)

  • 首发:深度学习入门宝典-《python深度学习》原文代码中文注释版及电子书

  • 科研工作者的神器-zotero论文管理工具

  • 机器学习的数学基础

  • 机器学习必备宝典-《统计学习方法》的python代码实现、电子书及课件

  • 吐血推荐收藏的学位论文排版教程(完整版)

  • 机器学习入门的百科全书-2018年“机器学习初学者”公众号文章汇总

还在为pip安装发愁?whl自助搜索查找及下载脚本问世!相关推荐

  1. 搜索很久_装了SSD你还需要这个软件才更快,搜索查找文件数据从此不再等待

    在速度性能方面,HDD和SSD相比简直是云泥之别.一个7200转的HDD读写速度才最多可达200MB/S,15000转也才勉强能达到300M/S.而且HDD,速度要快,转速得快,转速越快,越是吵人.而 ...

  2. pip 安装tensorflow.whl包出错 PermissionError: [Errno 13] Permission denied:

    pip install D:\tensorflow-1.5.0-cp35-cp35m-win_amd64.whl 错误信息 Exception: Traceback (most recent call ...

  3. pip安装tensorflow由于网速不好一直下载中断的问题解决

    一.问题分析 最近在安装tensorflow时电脑网速一直不好,于是便报错: pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnect ...

  4. 编程猫海龟编辑器(python)_海龟编程猫下载 海龟编程猫编辑器 v2.0 安装免费版(附使用教程) 64位 下载-脚本之家...

    编程猫海龟编辑器是由编程猫专为少儿所开发的一款Python编辑器,扩展功能非常强大,且支持硬件编程,可以一键安装第三方库,主要通过搭积木的方式让孩子们来学习Python,可充分提高他们的学习兴趣.在这 ...

  5. python3.9安装_Python 3.9下载 Python 3.9.0 for Windows 官方安装正式版 32位/64位 下载-脚本之家...

    Python 3.9.0是Python编程语言的最新主要版本,它包含许多新功能和优化.这是Windows上默认为64位安装程序的Python的第一个版本,同时Python 3.9不支持Windows ...

  6. python︱模块加载(pip安装)以及pycharm安装与报错解决方式

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 准备放下R开始学python,真是痛苦,因为找 ...

  7. python安装依赖包经常出错怎么办_Python 下载依赖包环境经常失败超时解决方法...

    人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包.但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装工具包的办法, ...

  8. pip安装库包以及.whl库包、.tar.gz库包具体方式

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 pip安装库包以及.whl库包..tar.gz库包具体方式 文章目录: 1 pip安装库包 2 安装 .whl库包文件 ...

  9. 如何制作并使用python发布的模块压缩包和whl包,并进行pip安装和使用教程,加上传Pypi,上传之后又如何增删whl项目

    如何制作并使用python发布的模块压缩包和whl包,并进行pip安装和使用教程 0 对于python中包概念的理解 一 创建setup.py文件 # 打包成模块压缩包 from distutils. ...

最新文章

  1. int(1) 和 int(10) 的区别?很多老程序都理解错了!
  2. WebView + jQuery
  3. JavaScript 读书笔记(二)— Date类型
  4. 未能加载文件或程序集“xxx”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集...
  5. Qt 实现串口终端控制台,适配RT-Thread的FinSH控制台功能(提供qt源码)
  6. CRC-16校验C#代码
  7. c++游戏代码坦克大作战_一红一蓝多种模式的双人小游戏:红蓝大作战
  8. cakephp 1.3 Controller
  9. 将jQuery的复选框设置为“已选中”?
  10. 大气辐射示意简单图_地理笔记 | N21 自然地理——大气的组成与垂直分层
  11. java 加入音乐_如何实现java插入背景音乐
  12. 被奉为经典的「金字塔原理」,教给我们哪些PPT写作技巧?
  13. 华为安装gsm框架_华为Mate20手机怎么下载安装谷歌服务助手,GMS框架安装教程
  14. 【计算机图形学】Liang-Barsky裁剪算法(C++实现)
  15. mysql特性—自适应哈希索引AHI
  16. Linkin-1.0.0提交spark任务到HDP环境报错:failed to request external resource provider
  17. web测试----死链检查(Xenu)
  18. HDU 6461 hzy 和zsl 的生存挑战(博弈)
  19. Html 使用svg图标、iconfont的使用方法
  20. Windows漏洞修复服务器,三种Windows服务器SSL/TLS的安全漏洞以及其补救方法

热门文章

  1. readelf源码学习
  2. 20161104面试题-面试常问问题
  3. [BZOJ2654] tree
  4. 最小生成树的Kruskal算法实现
  5. 关于私有变量,静态私有变量
  6. jsp怎么连接mysql_jsp如何连接数据库!
  7. 手机安装pem_抓包神器Charles的配置安装与弱网测试,你会了吗?
  8. 转载:cin总结附带string输入总结
  9. tuxedo连接mysql_TUXEDO与INFORMIX数据库的互连
  10. python中2d_【IT专家】如何在Python中复制一个2D数组?(复制)