Python 包管理(pip、conda)基本使用指南

Python 包管理

概述

介绍

Python 有丰富的开源的第三方库和包,可以帮助完成各种任务,扩展 Python 的功能,例如 NumPy 用于科学计算,Pandas 用于数据处理,Matplotlib 用于绘图等。在开始编写 Pytlhon 程序之前,可能需要安装一些常用的Python库,以便在编程过程中能够轻松地使用它们。

为了方便地管理第三方库和包,需要安装一个 Python 包管理工具,例如 pip、conda 等。这些工具可以帮助安装、升级和删除 Python 包,能够轻松地管理 Python 的依赖关系。


Anaconda、conda、pip、virtualenv 的区别

  • Anaconda

    Anaconda 是一个包含 180+ 的科学包及其依赖项的发行版本。其包含的科学包包括:conda,numpy,scipy,ipython notebook 等。

  • conda

    conda 是包及其依赖项和环境的管理工具。

    适用语言:Python,R,Ruby,Lua,Scala,Java,JavaScript,C/C++,FORTRAN

    适用平台:Windows,macOS,Linux

    用途:

    • 快速安装、运行和升级包及其依赖项。

    • 在计算机中便捷地创建、保存、加载和切换环境。

      如果需要的包要求不同版本的 Python,无需切换到不同的环境,因为 conda 同样是一个环境管理器。仅需要几条命令,就可以创建一个完全独立的环境来运行不同的 Python 版本,同时可以继续在常规的环境中使用常用的 Python 版本。——

    conda 为 Python 项目而创造,但可适用于上述的多种语言。

    conda 包和环境管理器包含于 Anaconda 的所有版本当中。

  • pip

    pip 是用于安装和管理软件包的包管理器。

    pip 适用语言:Python

    Python 中默认安装的版本:

    • Python 2.7.9 及后续版本:默认安装,命令为 pip
    • Python 3.4 及后续版本:默认安装,命令为 pip、pip3

    pip 名称的由来:pip 采用的是递归缩写进行命名的。其名字被普遍认为来源于2处:

    • “Pip installs Packages”(“pip 安装包”)
    • “Pip installs Python”(“pip 安装 Python”)
  • virtualenv

    virtualenv 是用于创建一个独立的 Python 环境的工具。

    解决问题:

    • 当一个程序需要使用 Python 2.7 版本,而另一个程序需要使用 Python 3.6 版本,如果将所有程序都安装在系统下的默认路径,如:/usr/lib/python2.7/site-packages,当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。
    • 安装程序或在程序运行时对其库或库的版本进行修改,都会导致程序的中断。
    • 在共享主机时,无法在全局 site-packages 目录中安装包。

    virtualenv 将会为它自己的安装目录创建一个环境,这并不与其他 virtualenv 环境共享库;同时也可以选择性地不连接已安装的全局库。


pip 与 conda 比较

  • 依赖项检查

    • pip:

      不一定会展示所需其他依赖包。

      安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。

    • conda:

      列出所需其他依赖包。

      安装包时自动安装其依赖项。

      可以便捷地在包的不同版本中自由切换。

  • 环境管理

    • pip:维护多个环境难度较大
    • conda:比较方便地在不同环境之间进行切换,环境管理较为简单
  • 对系统自带 Python 的影响

    • pip:在系统自带 Python 中包的更新/回退版本/卸载将影响其他程序。
    • conda:不会影响系统自带 Python。
  • 适用语言

    • pip:仅适用于 Python
    • conda:适用于 Python(主要),R,Ruby,Lua,Scala,Java,JavaScript,C/C++,FORTRAN。
  • conda 与 pip、virtualenv 的关系

    conda 结合了 pip 和 virtualenv 的功能。

    conda 使用了一个新的包格式, pip 不能安装和解析 conda 的包格式。可以使用两个工具,但是它们是不能交互的,比如使用 pip 本地安装 conda 的离线包。


pip(Python 包管理器)

介绍

  • pip 是 Python 的官方包管理器,它随 Python 的版本一起发布。当安装 Python 时,pip 也会被安装。
  • 通过 pip 可以轻松地安装和管理 Python 的不属于 Python 标准库的各种第三方库(包),以便可以在项目中可以直接在代码中引入并使用它们。
  • pip 是一个命令行工具,可以直接在终端或命令提示符中使用。

基本使用命令

  • python 包管理

    # 查看已安装的包
    pip list
    # 查看需要升级的库
    pip list -o
    
    # 安装一个 python 包
    pip install package_name			# package_name:具体地包名
    # 安装特定版本的包
    pip install package_name==version_number
    # 安装本地包
    pip install /path/to/package		# /path/to/package:本地包路径
    
    # pip的超时时间默认为15秒,如果下载速度过慢,可以使用以下命令设置超时时间为60秒
    # 方式1:添加参数--default-timeout=60。# 方式:在配置里面[global]下添加timeout=60
    pip install --default-timeout=60 package_name
    
    # 指定国内的源(阿里云)来安装某个包
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple <package-name>
    # 注意:如果url是http的化,需要信任(因为未加密),可以通过下面两个方法解决
    # 方式1:安装时加入 --trusted-host 临时参数
    pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com/simple package_name
    # 方式2:在 pip.conf 中加入 trusted-host 选项,该方法是一劳永逸
    [global]
    index-url = http://mirrors.aliyun.com/pypi/simple/
    [install]
    trusted-host=mirrors.aliyun.com
    
    # 升级包
    pip install --upgrade package_name
    # 升级pip
    pip install --upgrade pip
    
    # 卸载包
    pip uninstall package_name
    
    # 安装包的依赖项
    pip install package_name[dependencies]
    
    # 验证已安装的库是否有兼容依赖问题
    pip check package_name
    
    # 下载某个包到指定的路径下(不安装)
    pip download package_name -d "某个路径"  
    
    # 查看包的详细信息
    pip show package_name
    
    # 导出已安装的包列表
    pip freeze > requirements.txt
    # 从requirements.txt文件中安装包
    pip install -r requirements.txt
    
  • 下载源管理

    # 新增全局下载源。国内最好更换pip的源,以便更快地下载包
    pip config set name value
    # 示例:清华源
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    
    # 删除全局下载源
    pip config unset name
    
    # 查看pip下载的安装包的默认路径
    python -m site
    
    # 显示pip的配置列表
    pip config list
    # 显示pip文件的所有存储位置
    pip -v config list
    # 输出的不同的目录对应不同的参数 --global(全局)、--user(用户) 、--site
    
  • 其他命令

    # 清理缓存。pip安装包的时候,会下载并缓存一些包以便后续使用,不会自动删除,这可能会占用磁盘空间,需要手动删除
    pip cache purge
    
    # 查看pip版本
    pip --version
    pip -V
    

pip 的常规参数选项

  • -r,--requirement <file> :从给定的需求文件中进行安装。此选项可多次使用。

  • -c,--constraint <file> :使用给定的约束文件约束版本。此选项可多次使用。

    约束文件相对于需求文件更加的智能,约束文件与需求文件在一个关键方面不同:将包放入约束文件不会导致安装包,而需求文件将安装列出的所有包。常用来放某个包的依赖项。

  • --no-deps :不要安装程序包依赖项

  • --pre,pip :查找包括预发布和开发版本。默认情况下,pip 只查找稳定版本。

  • -e,--editable <path/url> :从本地项目路劲或 VCS url 以可编辑模式(即setuptools 开发模式)安装项目。

  • -t,--target <dir> :将软件包安装到 <dir>,默认情况下,这不会替换 <dir>下已经存在的文件或文件夹

  • --platform <platform> :仅使用与 <platform> 兼容的轮子。默认为运行系统的平台。多次使用此选项可指定目标解释器支持的多个平台

  • -U,--update :将所有指定的软件包升级到最新的可用版本。依赖项的处理取决于所使用的升级策略。

  • --upgrade-strategy <upgrade_strategy> :确定应如何处理依赖项升级。

    两种模式:

    • “eager” :无论当前安装的依赖项版本是否满足升级包的要求,都会升级依赖项
    • “only-if-needed” :仅在不满足升级包的要求时升级
  • --force-reinstall :重新安装所有软件包,即使它们已经是最新的

  • -I,--ignore-installed :忽略已安装的软件包,覆盖它们。

    如果现有软件包的版本不同或安装了不同的软件包管理器,这可能会破坏你的系统。

  • --compile :将 python 源文件编译为字节码

  • --no-compile :不要将 python 源文件编译为字节码

  • --no-binary <format_control> :不要使用二进制软件包。

    <format_control> 可以是:

    • all:禁用所有二进制软件包
    • none:清空之前提供的软件包,或者使用指定的软件包,使用逗号分割

    请注意,有些软件包很难编译,在使用此选项时可能无法安装。

  • --only-binary <format_control> :不要使用源程序包


Conda(Anaconda)

参考:Anaconda介绍、安装及使用教程

介绍

  • Conda 是一个开源的包管理系统和环境管理系统,可在 Windows、macOS 和 Linux 上运行。

    Conda 可快速安装、运行和更新包及其依赖项,因此可以轻松地在计算机上创建、保存、加载和切换环境。

    它本是为 Python 程序而创造的,因为 Python 的版本比较多,并且它的库也非常广泛,同时库和库之间存在很多依赖关系,所以在库的安装和版本的管理上很麻烦,因此设计 Conda 作为一个管理版本和 Python 环境的工具,但它也可以打包和管理任何语言的软件。

    conda 是包含在 Anaconda 里的,因此安装了 Anaconda 就可以直接使用 Conda,点击链接下载 download,选择对应的系统和版本类型。

  • Anaconda 是一个免费开源的 Python 和 R 语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测分析),

    Anaconda 致力于简化软件包管理系统和部署,附带了 Conda、python 和 150 多个科学软件包及其相关的包。

    Anaconda 的包使用软件包管理系统 Conda 进行管理。


在项目开发和部署过程中,由于项目需要的虚拟环境不同,如 python 版本、模块版本等,即可通过 Conda 为每个项目创建环境,然后在对应环境进行管理和使用。

  • 多种编程语言的包 package 和虚拟环境 environment 的管理

  • 非常简单的完成 package 的安装、运行、更新、删除、依赖问题

  • 可操作 repo.anaconda.com 上 7,500+ packages

  • 非常简单的完成不同环境的构建、保存、加载及切换

  • 支持语言:Python、R、Ruby、Lua、Scala、Java、JavaScript、C / C ++、FORTRAN

    但一般主要用于管理 python 包

  • 支持操作系统:Windows,macOS 和 Linux


Conda 常用指令

  • 虚拟环境管理

    # 查看所有环境。注:1.*号所在的行表示当前所在环境。2.系统默认虚拟环境为base
    conda env list
    conda info -e
    
    # 创建新的虚拟环境。注:1.遇到yes/no输入yes,即可完成创建。
    conda create -n envs_name python=python_version
    # envs_name			:指定环境名称
    # python_version	:指定Python版本
    
    # 进入虚拟环境
    conda activate envs_name
    # 退出当前环境
    conda deactivate
    
    # 删除虚拟环境
    conda env remove -n envs_name
    
    # 复制虚拟环境
    conda create -n new_envs_name --clone old_envs_name
    
    # 更新python
    conda update python
    
    # 更新conda版本。注:必须在base环境更新
    conda update conda
    
  • 模块/包管理

    # 查看当前环境的包列表
    conda list
    # 查看指定环境的包列表
    conda list -n envs_name
    
    # 在当前环境安装包。注:1.默认安装最新版本,2.同时安装多个包用空格分隔。
    conda install package_name
    # 在指定环境安装包
    conda install --name env_name package_name
    # 安装指定版本的包。注:使用conda安装指定包时,conda可以自动处理相关的依赖包
    conda install numpy=1.19
    # 指定范围内中版本包安装(安装版本处于1.0.4到1.1.1之间的pandas)
    conda install "pandas>1.0.4,<1.1.1"
    # 指定list中版本包安装(安装pandas 1.0.4版或者1.1.1版)
    conda install "pandas[version='1.0.4 |1.1.1']"
    
    # 包安装跳过【y/n】。默认情况下为 false,即安装过程中会请求是否继续安装,设置为yes则不再弹出请求。
    conda config --set always_yes yes
    
    # 卸载当前环境的包
    conda remove package_name
    # 卸载指定环境的包
    conda remove --name env_name package_name
    
    # 升级当前环境的包
    conda update/upgrade package_name
    # 升级指定环境的包
    conda update/upgrade -n env_name package_name
    # 升级全部包
    conda upgrade --all
    
    # 精确查找包
    conda search package_name
    # 模糊查找包,模糊符号为 *
    conda search *<模糊词>*
    # 查看某个范围内版本包
    conda search "PKGNAME [version='>=1.0.0,<1.1']"
    
  • conda 下载源管理

    # 查看已配置下载源
    conda config --show channels
    
    # 查看已配置下载源优先级
    conda config --get channels
    
    # 新增下载源(清华大学源)
    conda config --add channels channels_Name
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    
    # 删除下载源
    conda config --remove channels channels_Name
    
    # 显示包的安装来源
    conda config --set show_channel_urls yes
    

    注:Conda 下载源实际是写入到了 .condarc 文件里:

    • linux 系统的路径为 /home/xx/.condarc

    • windows 系统的路径为 C:\Users\admin\.condarc

      windows 默认无 .condarc 文件,需要 conda config –set show_channel_urls yes 先生成

  • 其他命令

    # 检查conda版本
    conda --version
    # 查看conda系统版本等信息
    conda info
    # 查看conda所有配置信息
    conda config --show
    

IDEA 配置 Conda 虚拟环境

IntelliJ IDEA 在安装并启用 Python 插件后支持使用 Conda 为 Python 创建虚拟环境。

创建 Conda 环境:

  1. 确保已将 Anaconda 或 Miniconda 下载并安装在计算机上。

  2. 导航到文件|项目结构

    • 方式1:左上角 File >>> Project Structure
    • 方式2:快捷键:Ctrl+Shift+Alt+S

  3. 在 “项目结构(Project Structure)“对话框中,在 “平台设置(Platform Setting)” 部分下选择“ SDK ” ,然后添加一个新的 SDK ,然后从弹出菜单中选择 “Python SDK

  4. 在”添加 Python 解释器(Add Python Interpreter)“对话框的左侧窗格中,选择 “Conda Environment” 。以下操作取决于以前是否存在 Conda 环境。

    如果选择“ 新环境(New environment)” :

    1. Location 字段中指定新的 Conda 环境的位置。注意,新的 Conda 环境应位于的目录必须为空!
    2. Python version 列表中选择 Python 版本
    3. Conda executable 字段中指定 Conda 可执行文件的位置
    4. 如果需要, 请选中“ 使所有项目都可用(Make available to all projects)”复选框。

    如果选择“ 现有环境(Existing environment)”(推荐使用):

    1. 展开“解释器(Interpreter)”列表,然后选择任何现有的解释器。或者,单击选择 “” 并在文件系统中指定 Conda 可执行文件的路径,例如 C:\Users\jetbrains\Anaconda3\python.exe

      注:最好是 Conda 目录下的 python.exe,否则可能会扫描不到安装好的第三方库

    2. Conda executable 字段中指定 Conda 可执行文件的位置

    3. 如果需要, 请选中“ 使所有项目都可用(Make available to all projects)”复选框。

  5. 单击确定以完成任务。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年9月2日
下一篇 2023年9月2日

相关推荐