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年setuptoolsdistribute两个开发组织决定再次合并到setuptools项目中
          • 所以distribute被废弃,setuptools又成了主流
      • 目前为止还有很多包管理工具:disutils2distlib
      • 但是官方支持的且认可度搞的就两个:distubilssetuptools
      • 更多包管理项目:https://packaging.python.org/key_projects/
      • 总结
        • distutils
          • 是标准库的一部分,能处理简单的包的安装
          • 通过setup.py进行安装
        • setuptools
          • 现在包安装的主流
          • 自带了一个easy_install安装脚本(后来出现了更厉害的pip安装脚本来替代它)
          • 引入.egg格式,后来出现了更好的.whl格式来替代它
    • 在 Python 2.7版本中已经封装了 setuptools 的包管理工具:easy_installpip作为内置模块存在了,所以我们不需要安装。
    • 在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文件
      • 多文件模块
        • 由包管理工具发布的项目
        • 基于distutilssetuptools工具发布的项目,都包含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目录

模块的其他操作

  • 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安装的模块,多个版本的模块,只记录最后一次安装的
          # 用于导入模块时的路径检索
          
      • 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
          
    • 导入指定版本第三方库

      • 安装了同一个第三方库的多个版本,要使用指定版本
        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.exepip.exe文件,就会到电脑环境变量path所有路径中去查找

文章来源:https://blog.csdn.net/weixin_50296259/article/details/135477029
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。