一个计算机技术爱好者与学习者

0%

好好学Python:Python包管理工具Conda

1. conda简介

本文部分内容来自ChatGPT。

conda是一个开源的跨平台包管理器,用于安装并管理不同编程语言的软件包。它最初是为Python编程语言设计的,但现已扩展到其他语言,如R、Ruby和Lua等。

conda的一个主要优势是它可以同时管理多个环境,使得在不同项目之间切换和隔离依赖变得容易。此外,conda还可以解决依赖关系,以确保软件包之间的兼容性。

相关文档:

2. Anaconda和Miniconda

2.1. Anaconda

Anaconda是一个流行的Python和R语言的数据科学发行版,提供了包括conda在内的一整套工具和库。Anaconda预装了许多用于数据科学和机器学习的常用包,使得新手能够快速开始编写代码。然而,Anaconda的体积较大,可能会占用大量磁盘空间。

安装方法:
访问anaconda官网,下载对应系统的安装包,执行安装。

2.2. Miniconda

Miniconda是Anaconda的轻量级版本,只包含Python和conda。Miniconda没有预装任何其他包,但允许用户使用conda自定义安装所需的包。Miniconda是为那些对磁盘空间有限制或只需特定软件包的用户设计的。

安装方法:
访问miniconda官网,下载对应系统的安装包或者脚本,执行安装。

Linux中安装方法:

1
2
3
4
5
6
7
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

MacOS中安装方法:

1
2
3
4
5
6
7
mkdir -p ~/miniconda3
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -o ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

Miniconda卸载方法:

1
2
rm -rf ~/miniconda3 # 根据真实安装路径修改
# 注释或删除 .bash_profile 中关于conda的配置

3. conda常用命令

查看conda的版本

1
conda --version

更新conda至最新版本

1
conda update conda

创建一个新的环境,指定Python版本

1
conda create --name <env_name> python=<python_version>

激活指定的环境

1
conda activate <env_name>

停用当前环境

1
conda deactivate

在当前环境中安装指定的软件包

1
conda install <package_name>

列出当前环境中的所有软件包

1
conda list

更新指定的软件包

1
conda update <package_name>

从当前环境中删除指定的软件包

1
conda remove <package_name>

列出所有已创建的环境

1
2
3
conda env list
# or
conda info --envs

删除指定的环境

1
conda env remove --name <env_name>

环境更换名称

1
2
3
conda env export --name old-name > environment.yml
conda env create --file environment.yml --name new-name
conda env remove --name old-name

4. conda创建环境示例

使用conda创建一个名为my_env的Python 3.7.10环境,并安装requests、pytest和pytest-cov依赖。

1
2
3
conda create --name my_env python=3.7.10
conda activate my_env
conda install requests pytest pytest-cov

5. conda常用配置

conda自定义配置,可以使用 conda config 命令进行设置,也可以直接修改 ~/.condarc 文件。

新的 shell 不激活 base 环境

1
conda config --set auto_activate_base false

移除 conda 环境前缀,比如(base)

1
conda config --set changeps1 false

因为常用 conda activate ,因此最好配置一个alias在~/.bash_profile

1
alias ca="conda activate"

6. conda vs pip

6.1. 跨平台和跨语言支持

conda:conda是一个跨平台的包管理器,支持Linux、macOS和Windows。虽然最初是为Python设计的,但conda现在也支持其他编程语言,如R、Ruby和Lua等。

pip:pip是Python的官方包管理器,专为Python设计。pip在各种平台上运行良好,但仅适用于Python包。

6.2. 环境管理

conda:conda可以轻松创建和管理多个独立的环境,这使得在不同项目之间切换和隔离依赖变得容易。这对于处理具有复杂依赖关系或需要特定版本的包的项目特别有用。

pip:虽然pip本身不支持环境管理,但它可以与virtualenv或venv(Python 3.3+内置)等工具结合使用来创建和管理虚拟环境。

6.3. 二进制包和编译

conda:conda提供的包通常是预编译的二进制格式,这意味着它们已经针对特定平台编译过,因此安装过程更快,不需要用户进行编译。这在处理需要编译的复杂库时非常有用,尤其是对于涉及复杂编译过程的本地扩展。

pip:pip从Python Package Index (PyPI)安装包,通常是源代码格式。虽然许多包可以直接安装,但某些包可能需要编译,这可能导致依赖关系问题或在特定平台上遇到安装困难。

6.4. 依赖解析

conda:conda在安装软件包时解决依赖关系问题,确保所有依赖的包都兼容。这有助于避免版本冲突和库之间的潜在问题。

pip:pip在解决依赖关系方面的能力有限,可能导致版本冲突或不兼容。尽管如此,pip在最近的版本中已经取得了很大的进步。

6.5. 应用场景

conda:conda特别适合于科学计算、数据科学和机器学习等领域,因为它可以轻松处理这些领域中常见的复杂依赖关系。Anaconda和Miniconda分别为这些领域的用户提供了全面和轻量级的解决方案。

pip:pip是Python生态系统的标准工具,适用于大多数项目。

7. conda vs pyenv

Conda 和 Pyenv 都可以管理 Python 环境,但它们的用途和功能略有不同。

Conda 是一个跨平台的 Python 包管理器和环境管理器。它可以在同一系统中管理多个 Python 版本和其它编程语言的环境。Conda 可以创建和管理 Python 环境,并安装、升级和删除软件包。Conda 还有一个非常好的特点就是可以轻松创建虚拟环境,每个虚拟环境可以拥有不同的 Python 版本和软件包。

Pyenv 是另一个 Python 版本管理器,它可以让您在同一系统中轻松安装和切换不同版本的 Python。Pyenv 不仅可以安装全局 Python 版本,而且还可以在不同的项目中使用不同的 Python 版本。此外,它还可以管理 Python 的虚拟环境。

综上所述,两者的区别在于 Conda 主要用于管理软件包和环境,而 Pyenv 主要用于管理 Python 版本。
如果需要在同一系统中使用不同版本的 Python 或不同的软件包,则可以使用 Conda。如果仅仅需要切换 Python 版本,则可以使用 Pyenv。

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-python-conda/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~