Python—pip、venv、conda、Mamba(3)

741 阅读10分钟

pip 介绍

pip 是 Python 标准库之外的一个第三方包管理工具,用于安装、升级和管理 Python 包也可以方便的管理Python包的依赖关系。从Python Package Index(PyPI) 下载和安装各种Python包。

官网:pypi.org/project/pip…

pip安装

  • 一般情况下,pip是随着Python一起安装了,可使用 pip --version 检查 pip 是否已经安装。
  • 如果发现pip不可用或者损坏,则直接执行如下命令
python -m ensurepip --upgrade

pip 常用命令

  • pip install : 安装Python包
  • pip install package_name[dependencies]:安装包以及其依赖的其他包
  • pip install /path/to/package:安装一个本地的Python包
  • pip install -r requirements.txt:从requirements.txt 文件中安装包
  • pip install package_name==version_number:安装指定版本的包
  • pip install --upgrade package_name:升级安装的包
  • pip install --user package_name:安装Python包到用户的本地目录
  • pip install --no-dependencies package_name:安装Python包但是忽略其他依赖项
  • pip install --find-links=URL package_name:从指定的URL中安装Python包
  • pip uninstall package_name: 删除包
  • pip list: 查看所有的包
pip install panpda

# 安装 my_pkg 并且安装其对应的[numpy,scipy]依赖项
pip install my_pkg[numpy,scipy]
  • 将指定的Python包或者库打包成wheel文件:pip wheel package_name
pip wheel numpy
# 注意:wheel 文件Python的分布式文件格式,替代Python传统的egg文件
  • pip cache purge:清理缓存

  • pip list : 列出当前Python环境中已经安装的所有包或者库列表

  • pip show package_name:显示包的详细信息,包括名称、版本号、安装路径等。

  • pip search package_name:在PyPI(Python Package Index)上搜索指定的包或者库,并显示相关信息。

  • pip freeze:显示当前Python环境中已安装的所有包名称和版本号

venv

系统安装的Python3只有一个版本:3.x。所有第三方的包都会被pip安装到Python3的site-packages目录下。当多个应用共享同一 Python 环境时,可能会出现库版本冲突。

venv 是 Python 提供的一个标准库,用于创建虚拟环境。虚拟环境是一种隔离的 Python 运行环境,可以让你为每个项目创建独立的依赖库,而不会干扰全局 Python 环境。它帮助避免不同项目之间的依赖冲突,并且使得项目更加易于管理。

  • 创建虚拟环境:python -m venv venv_name

    • venv_name 为虚拟环境选择的名称,通常用 venv 或项目名。这里会创建一个名为 venv_name 的文件夹,里面包含一个独立的 Python 解释器和一组标准的库。
  • 激活虚拟环境

    # Windows:
    venv_name\Scripts\activate
    
    # macOS 和 Linux:
    source venv_name/bin/activate
    

    当虚拟环境激活后,你会看到命令行提示符的前面有虚拟环境的名字,如 (venv_name),这表示你当前正在使用该虚拟环境。

  • 在虚拟环境中安装依赖:激活虚拟环境后,就可使用 pip 来安装所需的 依赖包。所有的依赖都会被安装到虚拟环境的 lib 目录中,而不是全局环境。

  • 查看已安装的包:在虚拟环境中,你可以使用 pip list 来查看已安装的所有包。

  • 退出虚拟环境:命令:deactivate 执行命令后则会返回到全局 Python 环境。

  • 删除虚拟环境

rm -r venv_name  # Linux/macOS
rmdir /S /Q venv_name  # Windows
  • 在虚拟环境中,常常需要记录项目的依赖,以便其他开发者可以复现相同的环境。可以通过 pip freeze 将当前环境中的所有依赖写入到 requirements.txt 文件中:
pip freeze > requirements.txt

要安装这些依赖,可以通过以下命令:

pip install -r requirements.txt
  • 使用 venv 创建虚拟环境,可以让你的项目拥有独立的 Python 环境,避免依赖冲突。
  • 创建虚拟环境:python -m venv venv_name
  • 激活虚拟环境:source venv_name/bin/activate(macOS/Linux)或 venv_name\Scripts\activate(Windows)
  • 安装包:pip install package_name
  • 退出虚拟环境:deactivate
  • 记录和恢复依赖:pip freeze > requirements.txt 和 pip install -r requirements.txt

Conda、MiniConda、Anaconda

开发中需要用到很多第三方库,比如Pillow、MySQL驱动程序、Web框架Flask、科学计算Numpy等。pip安装不仅费时费力,还需考虑兼容性。

Conda = 包和环境管理的工具

MINICONDA = conda + python + base packages

ANACONDA = MINICONDA + 150 high quality packages

  • Anaconda一个基于Python的数据处理和科学计算平台,它内置了许多第三方库。

  • Miniconda 更加的轻量,默认只包含了 conda,Python和一些它们所以依赖的包。

  • 文档:docs.anaconda.com/getting-sta…

image.png

常用的Python虚拟环境管理工具有:

  1. Virtualenv
  2. Conda
  3. pipenv
  4. venv

Anaconda 安装

  • 官网下载:www.anaconda.com/download 下载后可直接安装

  • 安装完 Anaconda

    • Anaconda Anaconda会把系统 Path 中的 python 指向自己自带的 Python,并且,Anaconda 安装的第三方模块会安装在Anaconda自己的路径下,不影响系统已安装的Python目录。

Conda 的常用命令

conda –help # 查看帮助
conda info # 查看 conda 信息
conda - version  # 查看 conda 版本
conda update conda  # 更新Conda(慎用)
conda clean –all # 清理不再需要的包
conda <指令> - help # 查看某一个指令的详细帮助
conda config - show #查看 conda 的环境配置
conda clean -p  # 清理没有用,没有安装的包
conda clean -t  # 清理 tarball
conda clean - all  # 清理所有包和 conda 的缓存文件

Conda 的 channel

Channel 是 Conda 用来查找和下载软件包的源(仓库)。可以从通道中获取需要的软件包。

  • 默认通道:Conda自带的官方通道,由Anaconda维护,包含了常用的数据科学和机器学习包。提供的包经过测试和优化,稳定且值得信赖。
  • Conda-Forge:一个社区驱动的通道,由社区维护,更新速度快,拥有数量庞大的软件包和活跃的维护者社区。
  • Bioconda:专为生物信息学和生物数据分析设计的通道。包含很多用于生物数据处理和分析的工具。

如果需要托管私有包,可以创建自己的Conda通道。可以通过简单的HTTP服务器(如NGINX或Apache)托管。

  • 查看已经配置的仓库:conda config - show channels
  • 添加新的通道:conda config - add channels conda-forge
  • 将新通道添加到优先位置:conda config --add channels <channel_name> --prepend
  • 将新通道添加到最后:conda config --add channels <channel_name> --append
  • 严格按照通道顺序选择包:conda config - set channel_priority strict
  • 删除通道:conda config --remove channels <channel_name>
  • 临时使用通道:conda install package-name -c conda-forge

通道优先级 Conda默认会根据通道列表的顺序依次查找包。以下命令启用或禁用通道优先级:

conda config - set channel_priority true  # 启用优先级
conda config - set channel_priority false # 禁用优先级

Conda 设置镜像

设置国内镜像,提高Conda包的下载速度

通过命令添加镜像通道

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes

接编辑 conda 配置文件 conda 的配置文件通常存储在 ~/.condarc(Linux/macOS)。可以手动编辑这个文件,向 channels 部分添加新的 channel

.condarc 文件内容:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

为了确保使用的是最新的镜像源,可以清理 Conda 缓存:conda clean -i

Anaconda 环境管理

Anaconda 使用 conda 来管理不同的 Python 环境。安装 Anaconda 时,它会创建一个名为 base 的默认环境,并在你打开终端时自动激活这个环境。

  • 命令行中显示 (base) ➜ 是因为 Anaconda 默认启用了 base 环境(base) 是 Anaconda 环境的名称,表示你当前正在使用 base 环境。

    image.png

    • 如果不想每次打开终端进入 (base) 环境,执行conda config --set auto_activate_base false
    • 手动激活 base 环境:conda activate base

通过界面也可以管理虚拟环境

image.png

通过命令管理虚拟环境

  • 创建虚拟环境:conda create -n env_name python=version package_names
  • 查看虚拟环境列表:conda env list
  • 激活(切换)虚拟环境:conda activate env_name
  • 退出当前虚拟环境:conda deactivate
  • 删除虚拟环境:conda remove -n env_name --all
  • 克隆环境:conda create - name new_evn_name - clone old_env_name

注意:

  • 如果要指定conda环境的路径,需要设置envs_dirs:conda config --add envs_dirs D:/python/envs
  • 创建环境时一定要指定python环境

Anaconda 包管理

激活环境后,你就可以使用 conda 和 pip 在当前环境下安装你所需要的包。conda环境中,不建议使用 pip 。

pipconda对比

www.anaconda.com/blog/unders…

image.png

  • pip:Python官方推荐,用于安装Python Package Index(PyPI)托管的包。可安装wheels或源码格式的包

  • conda:是一个跨平台的包和运行环境管理工具,其安装的包通常来自于Anaconda repositoryAnaconda Cloud。和 pip 安装的包不同的是,Conda包是二进制格式的,因此无需预先安装编译器。除此之外,Conda更强大的地方在于其不仅可以安装Python包,还可以安装C(C++)、R语言包以及其他语言编写的包等。conda ≈ pip(python包管理) + virtualenv(虚拟环境) + 非python依赖包管理

Anaconda 包管理操作

  • 安装Python包:conda install numpy
  • 安装指定版本的Python包:conda install numpy=1.18
  • 更新某个包到最新版本:conda update numpy
  • 更新所有包到最新版本(慎用):conda update --all
  • 卸载包:conda remove numpy
  • 列出环境中所有的包:conda list
  • 查看环境中某个包的信息:conda list numpy
  • 搜索指定包:conda search numpy

Conda 导入导出环境

将当前环境导入到yml文件中

conda env export > environment.yml

从yml文件中创建一个环境

conda env create -f environment.yml

Pycharm中使用Anaconda

Anaconda 用来管理项目环境及其依赖包,非常简单和高效;配合 Pycharm 可以任意切换不同的环境

  • 创建项目,通过conda新建虚拟环境 image.png 也可以选择已存在的环境 image.png

  • 查看项目所使用的环境 image.png

  • 创建项目时,环境 Name 的值为 PythonProject image.png

  • 创建好项目后就可在终端 Terminal 进行虚拟环境和包的操作管理 image.png

  • 已存在的项目,新增虚拟环境 image.png

  • 已存在的项目,切换虚拟环境 image.png

Mamba

Mamba 介绍

Mamba 是一个快速、可靠的包管理工具,作为 conda 的替代品,旨在提供更快的安装和更新体验。Mamba 是基于 conda 的,但使用了不同的实现,特别是在解决依赖关系和安装包的速度上进行了优化。

Mamba 的特点

  • 速度更快:Mamba 通过使用 C++ 实现的核心,比起 conda,在包解析和环境创建方面具有显著的性能优势。
  • 兼容性:Mamba 与 conda 完全兼容,可以直接替代 conda 命令,用户可以无缝地使用 Mamba 来代替 conda 执行大部分操作。
  • 简化的依赖解析:Mamba 使用不同的依赖解析算法,使得处理复杂依赖关系时更加高效,特别是在安装大量包时。
  • 并行下载:Mamba 支持并行下载包,这使得安装速度比 conda 更快。
  • 高效的依赖解析:Mamba 使用优化的依赖解析算法,能够更快速地处理复杂的依赖关系和环境冲突。

安装 Mamba

可以通过 conda 安装 Mamba。以下是安装 Mamba 的步骤:

conda install mamba -c conda-forge

Mamba 使用

mamba 的命令几乎与 conda 完全相同

  • 创建新环境:mamba create -n myenv python=3.8
  • 激活环境(激活命令同 conda):conda activate myenv
  • 安装包:mamba install numpy
  • 更新包: mamba update numpy
  • 删除包:mamba remove numpy
  • 列出环境:mamba env list
  • 列出已安装的包:mamba list