047.Python包和模块_第三方包和模块
2024-01-09 13:00:57
我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
第三方包和模块
- 注意:Python3.9之后推荐使用
pip
脚本安装第三方库,其他了解即可
关于第三方包和模块
- 为什么要安装第三方包和模块
- 因为标准模块有时不能满足我们的需求
- 第三方包和模块与标准模块的区别和联系
- 第三方包和模块与标准模块都是为了完成某个功能需求
- 标准模块
- 由官方发布,使用可靠。几乎没有bug,即使有也有团队立即修复
- 有健全的使用文档说明
- 第三方模块
- 由网友提供
- 使用文档不健全
- 更新不及时或者根本不更新
- 功能有bug
- 标准模块为什么不做的超级全
- 每个人的需求不同,做需求的并集会导致整个文件非常庞大
- 所以,做需求的交集,大多数人都需要的功能就被做到了标准模块中
- 什么叫第三方模块的安装
- 想办法把别人写的代码保存到本地,让我们自己直接使用
- 安装的方式
- 源码安装:手动到指定地方下载源码,然后安装到本地
- 包管理器安装:更加简单的自动糊的为用户安装和管理包和模块,只需要几个命令就可以完成
- 包管理项目发展简史
- 包管理项目的作用
- 到指定第三方包和模块下载地址检索和下载第三方包和模块
- 将自己开发的包和模块上传到指定第三方包和模块管理平台
- 包管理项目发展史
- distutils包管理项目
- 产生背景
- 为了让用户更好的使用和管理三方库,官方开发的包管理项目
- 时间:1998年开始开发 ~ 2000年停止开发
- 角色定位
- 属于Python标准库(官方发行)
- 功能特点
- 只需要通过命令运行一个叫做
setup.py
的文件即可安装第三方包和模块 - 只能处理简单的包安装
- 只需要通过命令运行一个叫做
- 产生背景
- setuptools包管理项目
- 产生背景
- 自从
distutils
停止开发之后,一些开发人员在它的基础之上进行开发自己的工具 - 其中最成功的就是
setuptools
(说明还有其他很多不太成功的)
- 自从
- 角色定位
- 属于第三方库
- 功能特点
- 更新频繁
- 拥有更多高级功能
- 自动依赖处理:会自动下载包和模块所依赖的其他包和模块
- egg分发格式
- easy_install命令:项目提供的安装脚本
- 与
distutils
兼容
- 产生背景
- distribute包管理项目
- 产生背景
setuptools
开发变缓慢了(不支持Python3,开发人员担心会如同distutils
一样停止开发)- 另外一批开发人员又基于
setuptools(fork)
创建了名为distribute
的库
- 角色定位
- 第三方库
- 功能特点
- bug更少
- 支持Python3
- 现状
- 2013年
setuptools
和distribute
两个开发组织决定再次合并到setuptools
项目中 - 所以
distribute
被废弃,setuptools
又成了主流
- 2013年
- 产生背景
- 目前为止还有很多包管理工具:
disutils2
、distlib
… - 但是官方支持的且认可度搞的就两个:
distubils
、setuptools
- 更多包管理项目:https://packaging.python.org/key_projects/
- 总结
- distutils
- 是标准库的一部分,能处理简单的包的安装
- 通过
setup.py
进行安装
- setuptools
- 现在包安装的主流
- 自带了一个
easy_install
安装脚本(后来出现了更厉害的pip
安装脚本来替代它) - 引入
.egg
格式,后来出现了更好的.whl
格式来替代它
- distutils
- distutils包管理项目
- 在 Python 2.7版本中已经封装了
setuptools
的包管理工具:easy_install
和pip
作为内置模块存在了,所以我们不需要安装。 - 在Python3.7
- 目前官方推荐使用
pip
,从Python3.9开始,easy_install
就不再是内置模块了
- 包管理项目的作用
- 使用pip而不是easy_install有以下几个原因:
- 1、 功能更强大:pip是Python的包管理工具,相比于easy_install,它提供了更多的功能和选项。pip支持安装、升级、卸载Python包,可以从PyPI(Python包索引)以及其他源安装包,还可以管理包的依赖关系。
- 2、 更好的包管理:pip可以自动解决包的依赖关系,确保安装的包与其他已安装的包兼容。它可以根据项目的需求,安装指定版本的包,或者安装最新的稳定版本。此外,pip还支持虚拟环境,可以为每个项目创建独立的Python环境,避免包之间的冲突。
- 3、 社区支持更好:pip是Python社区广泛使用的包管理工具,有着庞大的用户群体和活跃的开发者社区。因此,它能够提供更好的支持和更新,及时修复bug并发布新版本。
- 4、 生态系统更健全:由于pip是Python社区的主流包管理工具,大部分Python包都在PyPI上发布,而且很多第三方工具和框架都默认使用pip进行包的安装和管理。因此,使用pip可以更方便地获取和使用各种Python包,扩展开发能力。
- 常见已发布三方包和模块的形式
- 源码
- 单文件模块
- 一个
.py
文件
- 一个
- 多文件模块
- 由包管理工具发布的项目
- 基于
distutils
和setuptools
工具发布的项目,都包含setup.py文件
- 单文件模块
- .egg
setuptools
引入的一种格式setuptools
可以识别这种文件格式,通过这种文件格式安装包和模块
- .whl
- 替代
.egg
格式 - 本质是一种压缩包(
zip
格式)
- 替代
- 示例演示
-
官方包托管网站:https://pypi.org/
-
源码文件解压
-
.whl
格式文件(使用压缩包软件打开查看) -
.egg
格式文件基本已被.whl
格式替换
-
- 源码
- 安装方式
- 本地安装
- 将包和模块的源码、
.egg
文件、·whl
文件下载到本地进行安装 - 对于源码单文件模块,直接拷贝到相关文件夹就可以
- 对于源码多文件模块,通过
setup.py
脚本即可安装 - 对于
.gee
格式文件,使用setuptools
自带的安装脚本easy_install
进行安装 - 对于
.whl
个数文件,使用pip
进行安装
- 将包和模块的源码、
- 远程安装
- 通过安装脚本访问指定服务器进行检索、下载、安装
- 使用
easy_install
脚本进行安装 - 使用
pip
脚本进行安装 - 使用PyCharm IDE进行安装
- 默认从Python官方地址下载安装:https://pypi.org/simple/
- 安装源
-
服务器在国外,访问速度非常慢
- Python官方:https://pypi.org/simple/
-
镜像地址,服务器在国内,访问速度比较快
- 豆瓣源:http://pypi.douban.com/simple/
- 阿里云:http://mirrors.aliyun.com/pypi/simple/
- 腾讯源:http://mirrors.cloud.tencent.com/pypi/simple
- 清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/
- 华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/
- 华中科技大学:http://pypi.hustunique.com/
- 中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/
-
- 本地安装
模块安装的具体操作
-
https://blog.csdn.net/2201_75362610/article/details/132889644
-
本地单文件模块安装
- 将单文件模块拷贝到相关文件夹(
sys.path
中所包含的路径都可以) - 一般存放在Python解释器目录下的
Lib\site-package
文件夹中
- 将单文件模块拷贝到相关文件夹(
-
本地带
setup.py
文件模块安装- 1、打开命令行(cmd)工具
- 2、切换到
setup.py
文件所在目录 - 3、执行命令
python setup.py install # Python3.7版本之后,解释器也都是python,不再是Python3 # 安装模块命令也就与python2.x一样了: python setup.py install # 现在要将模块安装到不同版本的python环境中 # 1、将各个版本安装路径下的python.exe和pythonw.exe改名加上版本。如:python39.exe、pythonw39.exe # 再到命令行工具中使用带版本号解释器执行安装:python39 setup.py install # 2、修改环境变量,想要将模块撞到哪个版本环境中,就将path中那个版本的安装路径调整到最上层 # 再到命令行工具中使用安装命令进行安装:python setup.py install
- 注意
- 如果项目是使用distutils打包的,上述命令可以直接使用。
- 如果项目是使用setuptools打包的,有可能上述命令会报错。
- 有时候离线安装失败,是因为包依赖三方包,需要联网让它自动的给我们下载安装这些三方的包
-
本地
.egg
文件模块安装- 1、打开命令行(cmd)工具
- 2、切换到
.egg
文件所在目录 - 3、使用setuptools自带的安装脚本
easy_install
进行安装 easy_install
语法easy_install xxx.egg
-
本地
.whl
文件模块安装- 使用
easy_install
进行安装- 1、打开命令行(cmd)工具
- 2、切换到
.whl
文件所在目录 - 3、使用setuptools自带的安装脚本
easy_install
进行安装 easy_install
语法easy_install xxx.whl
- 使用
pip
进行安装-
1、打开命令行(cmd)工具
-
2、切换到
.whl
文件所在目录 -
3、使用Python自带的安装脚本
pip
进行安装 -
pip
语法pip install xxx.whl
-
也可以直接打开命令行(cmd)工具,再使用
pip
安装pip install 文件全路径\xxx.whl
-
- 使用
-
远程安装
- 系统自动从远程地址检索、下载、安装指定模块
- 使用
easy_install
进行安装easy_install xxx
- 使用
pip
进行安装pip install xxx
- 从哪个地方下载模块
- https://pypi.org/simple/
- 安装在本地的哪个位置
- 一般默认安装在Python环境路径下的
Lib\site_packages
目录
- 一般默认安装在Python环境路径下的
模块的其他操作
- easy_install脚本命令(Python3.9之后不再用,了解即可)
-
多个Python的切换安装
- 语法
easy_install-N.N xxx
- 示例
# Python 3.7 安装requess easy_install-3.7 requests # Python 3.8 安装requess easy_install-3.8 requests
- 语法
-
安装指定版本包
- 语法
easy_install "库名 限定符 版本[,限定符 版本]" # 库 名:要安装的模块名称 # 限定符:>、<、>=、<=、==
- 示例
easy_install "requests >= 2.14.1 # 安装大于或等于2.14.1版本的最新包 easy_install "requests > 1.0, < 2.0" # 安装大于1.0,并且小于2.0版本的包 easy_install "requests == 2.14.1" # 安装2.14.1版本的包 # 如果已经安装,则切换到这个版本
- 语法
-
升级第三方包
- 语法
easy_install --upgrade 库名 # 简写 easy_install -U 库名
- 示例
easy_install --upgrade requests # 简写 easy_install -U requests
- 语法
-
卸载第三方包
- 1、手动卸载
- 到Python安装目录
Lib\site-packages
中删除easy_install.pth
中的包记录 - 再删除对应的包文件(建议不删,尤其是依赖包。因为可能其他模块也依赖相同的包)
# easy_install.pth文件的作用 # 记录通过easy_install安装的模块,多个版本的模块,只记录最后一次安装的 # 用于导入模块时的路径检索
- 到Python安装目录
- 2、命令卸载
- 语法
easy_install -m 库名 # 这里不能通过easy_install-N.N来卸载指定Python版本中的库 # -m的含义: # 支持多版本,可在运行时进行切换 # 删除easy _install.pth 对应的库的记录,不知名包的某个版本,使用户不能直接导入 # 用户想要使用某个版本,需要使用如下步骤 import pkg_resources pkg_resources.require("requests==2.18.4") import requests print(requests)
- 示例
easy_install -m requests
- 语法
- 1、手动卸载
-
导入指定版本第三方库
- 安装了同一个第三方库的多个版本,要使用指定版本
import pkg_resources pkg_resources.require("requests==2.30.0") import requests print(requests)
- 安装了同一个第三方库的多个版本,要使用指定版本
-
切换三方安装源
- easy_install修改文件
Lib\site_packages\setuptools\command\easy_install.py # 将 # self.index_url = self.index_url or "https://pypi.org/simple/" # 修改 # self.index_url = self.index_url or "http://pypi.douban.com/simple/" # 具体修改成什么源地址,可以自己选择
-
- pip脚本命令
- 详细介绍:https://pip.pypa.io/en/stable/
- 修改安装源
- 一次性修改
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 永久性修改
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 执行上面修改之后生成配置文件:C:\Users\Administrator\AppData\Roaming\pip\pip.ini # 查看pip安装源 pip config get global.index-url
- 一次性修改
- 安装包
- 语法
# 直接安装(默认安装最新版本) pip install 库名 # 如果包已经存在,则不会再安装,重复安装并不会更新为最新版本 # 镜像安装(指定安装源安装) pip install 库名 -i 国内源镜像网址 # 安装指定版本包 pip install 库名==版本号 pip install "库名<版本号" # == 指定具体版本号 # <= 指定最高版本号 # >= 指定最低版本号 # < 不高于某版本号 # > 不低于某版本号 # 对于非指定具体版本号的情况,需要注意命令形式稍有不同: # 第三方库及版本号关系需要用引号(""),否则会出现报错
- 示例
pip install requests pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install requests==2.30.0 pip install "requests<2.31"
- 语法
- 安装在不同Python版本环境中
- 语法
# 通过不同版本启动python解释器,通过脚本模式执行语句 1、打开命令行工具(cmd),进入指定版本Python安装目录 2、执行安装命令:python -m pip install 库名 # 通过进入目录启动指定版本Python的pip脚本 1、打开命令行工具(cmd),进入到指定版本Python安装目录下的Scripts目录 2、执行安装命令:pip install 库名 # 通过指定版本的pip脚本安装到指定版本Python环境 pipN.N install 库名 # 安装包到指定路径 pip install 库名 --target=路径 pip install 库名 -t 路径
- 示例
# 通过指定版本的pip脚本安装到指定版本Python环境 pip3.6 install requests pip3.8 install requests # 安装包到指定路径 pip install requests --target=D:\Python\Python38\Scripts pip install requests --t D:\Python\Python38\Scripts
- 语法
- 查看包
- 语法
# 查看已安装所有的包(包含依赖库) pip list # 查看已安装所有的包(不包含依赖库) pip list --not-required # 查看已安装所有的包(不包含pip和setuptools) pip freeze # 查看可升级的包 pip list --outdated pip list -o # 查看指定包的信息 pip show 库名
- 语法
- 升级包
- 语法
pip install 库名 --upgrade pip install 库名 -U
- 示例
pip install requests --upgrade pip install requests -U
- 语法
- 卸载包
- 语法
pip uninstall 库名
- 示例
pip uninstall requests
- 语法
- 迁移包
- 语法
# 导出 pip freeze > 路径/requirements.txt # 导出一个存储包含库名和版本号的文本文件 requirements.txt # 导入 pip install -r 路径/requirements.txt # 根据requirements.txt文件中记录的库和版本自动安装所有库
- 语法
- 搜索包
- 这个是以前的版本有这个功能,现在不再支持这个功能。可以直接到官方地址https://pypi.org/search进行搜索
- 查看pip版本
pip --version pip -V
- 更新pip版本
python -m pip install --upgrade pip
补充
- 第三方包版本说明
库名-n1.n2.n3 # n3 # n3+1 当版本的bug修复之后 # n2 # n2+1 新增了某一个小功能 # n1 # n1+1 修改了之前的功能或者添加了一个新功能(api修改)
- 示例
1、发布了一个库 # fengzi-1.0.0 2、修复了一个bug,再次进行发布 # fengzi-1.0.1 3、在这个库里面新增了一个小功能,发布 # fengzi-1.1.0 4、发现1.1.0版本一个bug,修复——发布 # fengzi-1.1.1 5、新增一个小功能,发布 # fengzi-1.2.0 6、新增一个超级大功能,发布 # fengzi-2.0.0
总结
-
注意
-
python3.9开始内置模块不再有
easy_install
语法,由pip
完全替代 -
通过命令行工具启动指定Python版本中的
easy_install
或者pip
- 不能只是在Python安装目录下直接运行
easy_install
或者pip
命令 - 需要到
easy_install.exe
或者pip.exe
所在目录,再运行easy_install
或者pip
命令 - 因为在Python安装目录下找不到
easy_install.exe
和pip.exe
文件,就会到电脑环境变量path
所有路径中去查找
- 不能只是在Python安装目录下直接运行
文章来源:https://blog.csdn.net/weixin_50296259/article/details/135477029
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!