探索 Python 包管理:基础篇

1 简介  

        在 Python 的世界中,包管理器是提高开发效率和保证代码质量的关键工具。

        它们不仅极大地简化了代码库的管理,还能高效地处理项目依赖的问题,确保在开发过程更加流畅和稳定。

        从自动化安装和更新库,到保持项目依赖的一致性,包管理器在每一个环节都发挥着不可替代的作用。

        本文将深入探讨 Python 包管理器的核心功能和操作方法,揭示它们如何在现代编程实践中提供支持。

        我们将介绍几种流行的包管理器,包括它们的特点、使用场景以及如何在您的项目中高效利用这些工具。

        不论您是 Python 新手还是有经验的开发者,了解和掌握这些包管理器将帮助您在 Python 编程的道路上更加顺畅地前进。

2 常用的 Python 包管理器 

2.1 pip

        它是Python 的官方包管理器,功能强大且易于使用,能从 Python Package Index(PyPI)安装、升级和卸载成千上万的第三方库,是 Python 开发者的首选包管理器。

2.1.1 基础命令

2.1.1.1 安装包
pip install package_name
2.1.1.2 升级包
pip install --upgrade package_name
2.1.1.3 卸载包
pip uninstall package_name
2.1.1.4 列出已安装的包
pip list
2.1.1.5 查找包的信息
pip show package_name
2.1.1.6 查找可用更新
pip list --outdated

2.2 conda

        在数据科学和机器学习领域中占据主导地位,conda 能够管理不同版本的 Python 本身及其依赖,甚至支持跨语言包的管理,它在处理复杂依赖关系时表现的很出色。

2.2.1 基础命令 

2.2.1.1 创建一个新环境
conda create --name myenv

示例:conda create --name myenv python=3.8 ,也可以指定Python的版本。

 2.2.1.2 激活环境
conda activate myenv

激活名为 myenv 的环境

2.2.1.3 安装包
conda install package_name
2.2.1.4 列出已安装的包
conda list
2.2.1.5 更新包
conda update package_name
2.2.1.6 查找包
conda search package_name
2.2.1.7 删除包
conda remove package_name

 从当前环境中删除包 

2.2.1.8 列出所有环境
conda env list

 显示所有创建的环境 

2.2.1.9 禁用环境
conda deactivate

 禁用当前激活的环境

2.3 poetry

        Poetry 是一个现代的 Python 依赖管理和打包工具,它的目标是简化依赖管理和打包流程。Poetry 解决了一些传统工具(如 pip 和 setuptools)的常见问题,比如依赖冲突、锁文件的使用、以及包的发布过程。

2.3.1 基础命令 

2.3.1.1 安装 Poetry

Poetry 的安装通常不通过 pip 进行,而是通过其安装脚本。

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

或者在 Windows 上使用 PowerShell

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Conten | python -
2.3.1.2 创建一个新项目
poetry new my_project
2.3.1.3 添加依赖
poetry add package_name
2.3.1.4 安装依赖
poetry install
2.3.1.5 更新依赖
poetry update
2.3.1.6 打包和发布项目
poetry build

打包项目,并准备发布到 PyPI

poetry publish
2.3.1.7 运行脚本
poetry run python your_script.py

        Poetry 的优势在于其简洁明了依赖声明、依赖冲突处理以及打包和发布过程的自动化,它通过 pyproject.toml 文件为 Python 项目提供了一个统一的配置文件。

2.4 pipenv

        Pipenv 是一个 Python 开发工作流程的工具,旨在将包管理(pip)和虚拟环境管理(virtualenv)结合起来。

        Pipenv 通过自动生成和管理 PipfilePipfile.lock 来创建和维护项目的依赖关系,使得依赖管理更加直观和可靠。

2.4.1 Pipenv 的关键特性

  • 自动生成和管理 Pipfile 代替 requirements.txtPipfile 是用来声明项目所需的依赖。
  • 创建和管理虚拟环境: 自动创建和管理与项目关联的虚拟环境,避免依赖冲突。
  • 确定性构建: Pipfile.lock 用于锁定依赖,确保项目在不同环境中的一致性。

2.4.2 基础命令

2.4.2.1 安装 Pipenv

使用 pip 可以轻松安装 Pipenv

pip install pipenv
2.4.2.2 创建项目
pipenv install

将自动创建一个 Pipfile(如果尚不存在),并创建一个新的虚拟环境。

2.4.2.3 安装依赖
pipenv install package_name
2.4.2.4 激活虚拟环境

激活与当前项目关联的虚拟环境

pipenv shell
2.4.2.5 安装开发依赖
pipenv install package_name --dev
2.4.2.6 生成 Pipfile.lock

运行 pipenv lock 生成或更新 Pipfile.lock,确保依赖版本的确定性

pipenv lock
2.4.2.7 安装所有依赖

        在新环境中,运行 pipenv install --dev 将安装 PipfilePipfile.lock 中列出的所有常规和开发依赖。

pipenv install --dev
2.4.2.8 退出虚拟环境
exit
2.4.2.9 查看项目依赖图
pipenv graph

        Pipenv是现代 Python 开发中的一个重要工具,特别是对于那些希望在项目中使用虚拟环境来隔离依赖的开发者。

        通过自动化和简化依赖管理流程,它提高了开发效率,并有助于减少依赖相关的问题。

2.5 setuptools

        setuptools 是 Python 的一个关键库,用于构建和分发 Python 包。它提供了一系列工具和命令,使得从简单的 Python 项目到复杂的库和应用程序的打包和分发变得更加容易。

2.5.1 主要功能

  • 打包 Python 项目: setuptools 使你能够打包你的 Python 项目,以便其他人可以通过 pip 轻松安装。

  • 定义项目元数据:setup.py 文件中,你可以定义项目的名称、版本、描述、依赖等信息。

  • 自动化依赖安装: 在打包过程中,setuptools 可以自动识别并安装项目所需的依赖。

  • 扩展命令: setuptools 提供了一系列命令用于项目构建、安装、测试等。

  • 易于集成: 它易于与其他工具(如 pip)和 CI/CD 流程集成。

2.5.2 基础命令

2.5.2.1 安装 setuptools
pip install setuptools
2.5.2.2 创建 setup.py 文件

        在你的项目根目录下创建一个 setup.py 文件,其中定义了你的包的元数据和配置信息。

2.5.2.3 构建源码分发包

  这会在 dist 目录下创建一个源码分发包(通常是 .tar.gz.zip 文件)

python setup.py sdist
 2.5.2.4 构建轮文件(wheel)

  这会生成一个 wheel 文件(.whl),这是一个更现代的 Python 包分发格式

python setup.py bdist_wheel

 2.5.1.5 安装项目

  这会安装项目及其所有依赖

python setup.py install

        setuptools 是 Python 生态中非常重要的一部分,尤其对于开发者来说,了解和掌握如何使用 setuptools 对于创建和维护 Python 项目至关重要。

包管理器的核心功能

3.1 依赖管理

        包管理器能够自动解析和安装所需的依赖,保证项目环境的一致性。

3.2 版本控制

        它们支持指定、升级或降级库的版本,帮助开发者维护项目的稳定性。

3.3 虚拟环境管理

        一些包管理器提供或与虚拟环境工具集成,确保不同项目之间的依赖互不干扰。

如何选择合适的包管理器

        选择合适的包管理器取决于我们的项目需求。

        例如,我们需要处理跨语言的依赖,或者在数据科学项目中工作,那么conda 可能是一个更好的选择。

        对于标准的 Python 开发,pip 配合 virtualenv 或 pipenv 通常可以满足需求。

相关推荐

  1. python依赖管理

    2024-01-08 11:14:01       44 阅读
  2. python基础---闭

    2024-01-08 11:14:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-08 11:14:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-08 11:14:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-08 11:14:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-08 11:14:01       18 阅读

热门阅读

  1. Python Selenium 4 如何忽略chrome浏览器证书验证

    2024-01-08 11:14:01       37 阅读
  2. 阿里云无影云电脑

    2024-01-08 11:14:01       46 阅读
  3. (洛谷)P5734 【深基6.例6】文字处理软件

    2024-01-08 11:14:01       31 阅读
  4. 牛客 最大序列和 DP

    2024-01-08 11:14:01       40 阅读
  5. php生成唯一ID的5种方法介绍

    2024-01-08 11:14:01       34 阅读
  6. ubuntu的boot分区被删除恢复

    2024-01-08 11:14:01       46 阅读
  7. Js进阶29-正则表达式专题

    2024-01-08 11:14:01       27 阅读
  8. 回溯算法part02 算法

    2024-01-08 11:14:01       38 阅读