什么是PYTHON虚拟环境
Python虚拟环境是一种用于隔离Python项目的独立环境。用于隔离不同项目的依赖关系。它允许你在同一台计算机上管理多个项目,每个项目都有自己独立的Python运行环境和依赖项。通过创建虚拟环境,你可以在同一台计算机上同时管理多个项目的不同依赖库和版本,避免它们之间的冲突。
使用虚拟环境我们可以做到:
- 依赖隔离:每个虚拟环境都有自己独立的Python解释器和安装的库,因此可以避免不同项目之间的依赖冲突。
- 环境一致性:虚拟环境可以确保项目在不同环境中具有相同的依赖项和配置,从而提供更好的可移植性和一致性。
- 简化依赖管理:通过在项目中使用虚拟环境,你可以使用项目特定的依赖版本,并在虚拟环境中安装和更新依赖项,而不会影响全局Python环境。
常见的Python虚拟环境管理工具
常见的Python虚拟环境管理工具主要有以下几个:
venv
:Python自带的虚拟环境模块,适用于Python3。virtualenv
:第三方工具,可以在Python2和Python3中创建虚拟环境。conda
:用于创建和管理虚拟环境的强大工具,特别适用于科学计算和数据分析项目。pyenv
:可以切换全局Python版本和创建本地虚拟环境的版本管理器。pipenv
:结合了虚拟环境和包管理工具的工具,适用于开发Python项目。
常见管理工具的优缺点及适用场景
- venv:
- 优点:Python自带,无需额外安装。轻量级,创建速度快。
- 缺点:仅适用于Python3。
- 适用场景:适合Python3项目的简单虚拟环境管理,特别是标准库中已有所需模块的项目。
- virtualenv:
- 优点:支持Python2和Python3。功能强大,可自定义虚拟环境的目录结构。
- 缺点:需要额外安装。
- 适用场景:适合创建Python2和Python3的虚拟环境,以及需要自定义虚拟环境结构的项目。
- conda:
- 优点:功能强大,可以管理Python环境和非Python环境。拥有大量预编译的科学计算和数据分析包。跨平台支持良好。
- 缺点:文件体积较大,安装过程较慢。使用conda命令时,有时会出现与pip不兼容的情况。
- 适用场景:适合科学计算和数据分析项目,特别是需要管理非Python环境的项目。
- pyenv:
- 优点:支持切换全局Python版本,方便管理多个Python版本。可以创建本地虚拟环境。
- 缺点:不能创建多个独立的Python环境。
- 适用场景:适合希望管理多个Python版本以及创建本地虚拟环境的项目。
- pipenv:
- 优点:集成了虚拟环境和包管理工具,操作简单方便。自动管理项目所需的包和依赖冲突。
- 缺点:有时会慢,尤其是在安装包时。不太适合大型和复杂的项目。
- 适用场景:适合小型或中小型Python项目,特别是需要自动解决包依赖问题的项目。
创建虚拟环境
这里使用virtualenv来创建虚拟环境,首先在D盘根目录新建一个OAK文件夹,
打开终端或命令行界面。
进入我们想要创建虚拟环境的目标文件夹即OAK文件夹。
输入virtualenv OAKenv
指令创建虚拟环境;这里使用virtualenv
工具来创建虚拟环境。运行这行指令后,会在当前目录下创建一个名为OAKenv
的文件夹,该文件夹将包含一个独立的Python环境。
激活虚拟环境:通过输入以下命令来激活虚拟环境:OAKenvScriptsactivate
;激活虚拟环境后,我们可以使用pip
命令安装项目所需的依赖,并确保这些依赖只对该虚拟环境可见,而不会影响其他项目。如果想要退出虚拟环境,可以在命令行中直接运行deactivate
命令。
这里需要注意:每次我们想使用虚拟环境时,都需要先激活该虚拟环境才能生效。激活虚拟环境会将该环境的Python解释器和安装的库设置为我们当前终端会话的默认Python运行环境。
一旦虚拟环境被激活,我们在终端中运行的任何Python命令或脚本将使用该虚拟环境的Python解释器和已安装的库。在我们完成项目开发或不再需要该虚拟环境时,可以使用虚拟环境管理工具提供的命令退出虚拟环境,以返回到全局Python环境。
需要注意的是,虚拟环境的激活只对当前终端会话有效,如果我们打开了新的终端窗口或启动了新的终端会话,我们需要重新激活虚拟环境才能在新的终端中使用它。
安装依赖:一旦我们激活了一个虚拟环境,它将会提供一个独立的Python运行环境,这意味着我们需要在该环境中重新安装我们需要的库和依赖项。比如这里我需要depthai
库,我们就需要执行下面的指令来安装该依赖库
pip install depthai-sdk
依赖安装完成后,我们可以使用下面的指令查看安装的包清单
代码语言:javascript复制pip list
pip list
指令用于列出当前Python环境中已安装的所有包及其版本信息。它可以帮助我们查看已安装的包,以及它们的版本号,这在管理和维护Python环境时非常有用。
执行pip list
命令会显示一个表格,其中包含已安装的包名称和对应的版本号。示例如下:
Package Version
------------------- -------
numpy 1.21.0
pandas 1.3.0
scikit-learn 0.24.2
tensorflow 2.5.0
从这个列表中,我们可以得知当前Python环境安装了哪些包以及它们的版本号。这对于检查包是否需要更新,或者查看已安装的依赖项非常有用。
此外,我们还可以通过添加一些选项来改变pip list
命令的行为。例如,--outdated
选项可以列出所有已安装包的过时版本,这对于查找需要更新的包非常有用。示例:
pip list --outdated
常见的问题
- 虚拟环境的是否每次都需要创建? 虚拟环境不需要每次都创建,特别是对于已经存在的项目。
如果我们已经在项目中创建了虚拟环境,那么在其他环境中或其他机器上工作时,我们可以直接复用该虚拟环境,而不需要重新创建。
我们可以将项目的虚拟环境目录(通常是一个包含Python解释器和依赖包的文件夹)拷贝到其他位置,然后在新的位置中激活这个已存在的虚拟环境。
这样做的好处是,我们可以保持项目的依赖环境一致,便于与团队成员共享和协作。
注意,如果我们在不同的项目之间有不同的依赖关系,那么最好为每个项目创建独立的虚拟环境,以确保各项目之间的隔离性和依赖管理的清晰性。
- 激活虚拟环境是不是每次运行项目都要激活? 每次运行项目时,通常都需要激活虚拟环境。
虚拟环境的激活过程会将该环境的Python解释器和依赖设置为当前运行环境中的默认解释器和依赖。这样可以确保项目在运行时使用的是正确的Python版本和依赖包。
每次激活虚拟环境时,都要安装依赖吗?
每次激活虚拟环境时,并不需要重新安装已经安装过的依赖包,除非你添加了新的依赖项。
当我们首次创建一个虚拟环境时,我们需要安装项目所需的依赖包。这可以通过运行 pip install 命令来完成。例如,我们可以运行以下命令来安装项目的依赖包:
代码语言:javascript复制pip install -r requirements.txt
requirements.txt 是一个包含项目所有依赖包及其版本号的文件。
一旦依赖包安装完成,我们只需要在激活虚拟环境时安装新增的依赖包。当我们添加新的依赖包时,我们可以通过运行 pip install 命令来安装新包,或者将新包添加到 requirements.txt 文件中并运行 pip install -r requirements.txt 命令进行安装。
在激活虚拟环境之后,我们可以使用已安装的依赖包运行你的项目。因此,每次激活虚拟环境时,并不需要重新安装已经安装过的依赖包,除非你添加了新的依赖项。