Python 包管理是开发过程中非常重要的一部分,用于安装、管理、和卸载依赖项。以下是几种常见的 Python 包管理方式:
1. pip (Python Package Index Installer)
- 功能:
pip
是 Python 自带的包管理工具,可以从 PyPI 安装、升级和卸载 Python 包。 - 使用示例:
- 安装包:
pip install package_name
- 卸载包:
pip uninstall package_name
- 查看已安装包:
pip list
- 查看包信息:
pip show package_name
- 从
requirements.txt
安装:pip install -r requirements.txt
- 安装包:
- 优点:
pip
是标准的包管理工具,支持大多数 Python 项目和库。
2. Conda
-
功能:
Conda
是一个跨平台的包管理和环境管理系统,支持 Python 和其他编程语言。除了管理 Python 包,它还可以管理如C
、R
、Java
这样的包,并可以管理虚拟环境。 -
使用示例:
-
创建环境:
conda create --name myenv
-
激活环境:
conda activate myenv
-
安装包:
conda install package_name
-
卸载包:
conda remove package_name
-
查看已安装包:
conda list
-
查看环境:
conda env list
tips: 如果当前环境已经激活了conda,那么直接使用pip命令即可,安装和卸载等操作都会再当前conda环境下。
-
-
优点:
Conda
提供了强大的环境管理功能,并且安装包时可以自动处理依赖关系和冲突,特别适合科学计算和数据科学领域。
3. Virtualenv
- 功能:
virtualenv
是一个工具,用于创建隔离的 Python 虚拟环境。每个虚拟环境都有自己独立的 Python 解释器和安装的包。 - 使用示例:
- 创建虚拟环境:
virtualenv venv
- 激活虚拟环境:
- Windows:
venv\Scripts\activate
- Mac/Linux:
source venv/bin/activate
- Windows:
- 退出虚拟环境:
deactivate
- 创建虚拟环境:
- 优点:
virtualenv
非常轻量,可以避免全局 Python 环境的依赖冲突。
4. Pipenv
-
功能:
Pipenv
是一个结合了pip
和virtualenv
功能的工具,专注于简化 Python 项目中的依赖管理和虚拟环境管理。它使用Pipfile
来管理依赖项。 -
使用示例:
- 创建环境并安装包:
pipenv install package_name
- 激活环境:
pipenv shell
- 查看依赖:
pipenv graph
- 锁定依赖:
pipenv lock
- 创建环境并安装包:
-
优点:
Pipenv
简化了项目依赖的管理,并自动生成锁定文件Pipfile.lock
,确保依赖的一致性。
5. Poetry
-
功能:
Poetry
是一个现代的依赖管理和打包工具,能够管理项目的依赖并简化发布流程。它使用pyproject.toml
文件管理依赖。 -
使用示例:
- 创建新项目:
poetry new myproject
- 安装依赖:
poetry add package_name
- 激活虚拟环境:
poetry shell
- 发布包:
poetry publish
tips:有点类似于java的maven管理概念和gradle工具,在项目组人多的情况下使用可以避免产生一些包的冲突。
- 创建新项目:
-
优点:
Poetry
提供了一体化的项目管理体验,包括依赖管理、虚拟环境管理和打包发布功能,适合现代 Python 项目的开发。
6. Pipx
- 功能:
Pipx
是一个专门用于隔离和管理 Python 应用的工具,适合安装和运行独立的 Python 命令行工具。每个工具都安装在独立的虚拟环境中。 - 使用示例:
- 安装工具:
pipx install package_name
- 卸载工具:
pipx uninstall package_name
- 运行命令:
pipx run command_name
- 安装工具:
- 优点:
Pipx
确保每个命令行工具运行在自己的隔离环境中,避免全局依赖冲突。
其他
另外,如果自己的机器中有多个python环境,不确定当天哪个在生效,可以随意指定一个包看下包的路径:pip show 已知的包名
总结
- pip 是最基础的包管理工具,几乎适用于所有场景。
- Conda 更适合需要管理环境和多种语言依赖的复杂项目,尤其是数据科学领域。
- Virtualenv 和 Pipenv 都是轻量的虚拟环境管理工具,适合独立的 Python 项目。
- Poetry 是现代 Python 项目管理的全能工具,推荐用于新项目。
- Pipx 则非常适合安装和管理独立的命令行工具。