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 环境共享库;同时也可以选择性地不连接已安装的全局库。
- 当一个程序需要使用 Python 2.7 版本,而另一个程序需要使用 Python 3.6 版本,如果将所有程序都安装在系统下的默认路径,如:
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 环境:
-
确保已将 Anaconda 或 Miniconda 下载并安装在计算机上。
-
导航到文件|项目结构
- 方式1:左上角 File >>> Project Structure
- 方式2:快捷键:Ctrl+Shift+Alt+S
-
在 "项目结构(Project Structure)"对话框中,在 “平台设置(Platform Setting)” 部分下选择“ SDK ” ,然后添加一个新的 SDK ,然后从弹出菜单中选择 “Python SDK”
-
在"添加 Python 解释器(Add Python Interpreter)"对话框的左侧窗格中,选择 “Conda Environment” 。以下操作取决于以前是否存在 Conda 环境。
如果选择“ 新环境(New environment)” :
- 在 Location 字段中指定新的 Conda 环境的位置。注意,新的 Conda 环境应位于的目录必须为空!
- 从 Python version 列表中选择 Python 版本
- 在 Conda executable 字段中指定 Conda 可执行文件的位置
- 如果需要, 请选中“ 使所有项目都可用(Make available to all projects)”复选框。
如果选择“ 现有环境(Existing environment)”(推荐使用):
-
展开“解释器(Interpreter)”列表,然后选择任何现有的解释器。或者,单击选择 “…” 并在文件系统中指定 Conda 可执行文件的路径,例如
C:\Users\jetbrains\Anaconda3\python.exe
注:最好是 Conda 目录下的 python.exe,否则可能会扫描不到安装好的第三方库
-
在 Conda executable 字段中指定 Conda 可执行文件的位置
-
如果需要, 请选中“ 使所有项目都可用(Make available to all projects)”复选框。
-
单击确定以完成任务。