4

Python虚拟环境概述及常见管理工具介绍 | CHEGVA

 1 year ago
source link: https://chegva.com/5666.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Python虚拟环境(1)—虚拟环境概述及常见管理工具介绍

◎知识点

  1. 虚拟环境的概述

  2. 虚拟环境管理工具

  3. 确定当前Python解释器对应的Python安装目录

Python 应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。

这意味着一个 Python 环境可能无法满足每个应用程序的要求。如果应用程序 A 需要特定模块的 1.0 版本,但应用程序 B 需要 2.0 版本,则需求存在冲突,安装版本 1.0 或 2.0 将导致某一个应用程序无法运行。

这个问题的解决方案是创建一个 virtual environment ,一个目录树,其中安装有特定Python版本,以及许多其他包。

然后,不同的应用将可以使用不同的虚拟环境。 要解决先前面例子中的冲突,应用程序 A 可以拥有自己的安装了 1.0 版本的虚拟环境,而应用程序 B 则拥有安装了 2.0 版本的另一个虚拟环境。 如果应用程序 B 要求将某个库升级到 3.0 版本,也不会影响应用程序 A 的环境。

比如在同一个Python环境下运行三个项目,这三个项目都用到了pymysql三方库,但是需要的版本都不一样,运行项目就得下载指定版本的pymysql,运行另一个项目时就得把之前的版本卸载再安装新的适配版本,这还只是一个三方库,如果涉及到多个不同版本的三方库,管理和维护就很麻烦,也容易出错。还有一种情况就是在同一个环境下同时运行这三个项目,管理就更复杂了。

Python虚拟环境(1)—虚拟环境概述及常见管理工具介绍

Python虚拟环境(1)—虚拟环境概述及常见管理工具介绍

这时,Python虚拟环境应运而生:根据Python的安装目录虚拟出三个独立的、虚拟的Python运行环境,简称虚拟环境。每个虚拟环境都有一个独立的Python解释器,都有一套独立的Python标准库、独立的工具和独立的第三方库。三个虚拟环境分别对应三个项目,每个项目所使用的所有第三方库都安装在各自的虚拟环境中。Python的安装目录和各个虚拟环境之间相互独立,互不影响,从而有效解决了第三方库版本冲突的问题

Python虚拟环境(1)—虚拟环境概述及常见管理工具介绍

总结来说,虚拟环境主要有如下作用:

1. 解决第三方库的版本冲突、管理混乱的问题

2.开方环境相互独立,便于部署、升级、维护等

Python虚拟环境(1)—虚拟环境概述及常见管理工具介绍

2.虚拟环境管理工具

常见的虚拟环境管理工具如下:

  • venv : Python 标准库中的虚拟环境管理工具

  • conda : Anaconda 下的管理工具

  • Virtualenv : 第三方的虚拟环境管理工具,在 Pypa 中维护

  • Pipenv : 第三方的虚拟环境管理工具,在 Pypa 中维护

  • poetry : 第三方的虚拟环境管理工具

→ 详见:Python 项目工程化开发指南

3.学习虚拟环境预备知识

当我们在电脑上安装了多个版本的Python时,就会存在多个Python的安装目录,如何确定当前Python解释器对应的Python安装目录呢?首先我们可以使用pyenv这个python版本管理工具来安装管理多个python版本 → MacOS 下利用 pyenv 管理Python 版本和虚拟环境使用 pyenv 管理多个 Python 版本依赖环境

以我的Mac电脑Python环境为例,上边安装了python2.7、python3.7和anaconda3环境。对应python3对应的解释器完整路径是where python3的执行结果的第一行,对应的Python3安装目录是完整路径中/bin/python3前面的部分,也可以用which python3来查看。

Python虚拟环境(1)—虚拟环境概述及常见管理工具介绍
→ ~  where python3
python3: aliased to /usr/local/Cellar/python/3.7.3/bin/python3
/Users/anzhihe/opt/anaconda3/bin/python3
/usr/bin/python3
→ ~  which python3
python3: aliased to /usr/local/Cellar/python/3.7.3/bin/python3
→ ~  python3
Python 3.7.3 (default, Mar 27 2019, 09:23:32)
[Clang 9.0.0 (clang-900.0.39.2)] on darwin

→ ~  where python2
python2: aliased to /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2
/usr/local/bin/python2
→ ~  which python2
python2: aliased to /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
→ ~  python2.7
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 19 2020, 20:48:48)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin

→ ~  where python
/Users/anzhihe/opt/anaconda3/bin/python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
/usr/local/bin/python
→ ~  which python
/Users/anzhihe/opt/anaconda3/bin/python
→ ~  python
Python 3.9.7 (default, Sep 16 2021, 08:50:36)
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Python

参考:

安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5666.html | ☆★★每天进步一点点,加油!★★☆ | 

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK