探索 Python 包管理:基础篇

2024-01-08 03:09:07

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?包管理器的核心功能

3.1?依赖管理

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

3.2?版本控制

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

3.3 虚拟环境管理

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

4?如何选择合适的包管理器

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

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

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

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