Python虚拟环境创建和使用总结

参考:

venv --- 虚拟环境的创建 — Python 3.12.5 文档

【Python进阶】Python虚拟环境使用全方位指南:从零开始轻松实践 - 知乎 (zhihu.com)

Python 如何删除使用 venv 创建的 Python3 虚拟环境|极客教程 (geek-docs.com)

我们知道,python程序的开发和运行,需要基于python环境。不过,实际开发中我们常常会使用虚拟环境。那这个虚拟环境是什么呢?

在进行Python开发时,你可能遇到这样的问题:一个项目需要Python库A的1.0版本,而另一个项目则依赖于A的2.0版本。如果直接在全局环境中安装这些包,就可能出现版本冲突,影响项目的正常运行。这时,Python虚拟环境就能发挥它的作用,为每个项目提供一个“干净”的Python运行环境。

但是要注意,虚拟环境并不是脱离本地环境而存在的,而是基于本地环境的,虚拟环境的重点是为每个项目管理各种不同类型和版本的库,而并非python解释器的版本。所以,即使使用了虚拟环境,也要先安装了本地的python环境。另一方面,没有本地环境也就压根无法创建虚拟环境。

虚拟环境是在现有的 Python 安装版基础之上创建的,这被称为虚拟环境的“基础”Python,并且还可选择与基础环境中的软件包隔离开来,这样只有在虚拟环境中显式安装的软件包才是可用的。

当在虚拟环境中使用时,常见安装工具如pip将把 Python 软件包安装到虚拟环境而无需显式地指明这一点。

虚拟环境主要特性:

  • 用来包含支持一个项目(库或应用程序)所需的特定 Python 解释器、软件库和二进制文件。 它们在默认情况下与其他虚拟环境中的软件以及操作系统中安装的 Python 解释器和库保持隔离。

  • 包含在一个目录中,根据惯例被命名为项目目录下的``venv`` 或 .venv,或是有许多虚拟环境的容器目录下,如 ~/.virtualenvs

  • 不可签入 Git 等源代码控制系统。

  • 被视为是可丢弃性的 —— 应当能够简单地删除并从头开始重建。 你不应在虚拟环境中放置任何项目代码。

  • 不被视为是可移动或可复制的 —— 你只能在目标位置重建相同的环境。

创建虚拟环境

在使用虚拟环境之前,我们需要基于基础的本地python解释器来创建虚拟环境,一般有三种方式。

使用Python内置venv模块创建虚拟环境

从Python 3.3版本起,Python标准库自带了venv模块用于创建虚拟环境。

创建虚拟环境:

# 假设您在项目根目录下创建虚拟环境
$ python3 -m venv my_venv

这将在当前目录下生成一个名为my_venv的文件夹,其中包含了独立的Python解释器和pip包管理器。

激活虚拟环境:

  • Windows系统:
$ .\my_venv\Scripts\activate
  • Linux或macOS系统:
$ source my_venv/bin/activate

激活后,终端前缀将显示虚拟环境名,表示当前正在使用该环境的Python解释器。

安装和管理包:

在激活的虚拟环境中,您可以安装和管理Python包:

( my_venv ) $ pip install django==3.2

退出虚拟环境:

( my_venv ) $ deactivate

使用virtualenv第三方库创建虚拟环境

对于早期Python版本或者希望额外功能的情况,可以使用virtualenv库创建虚拟环境。首先需要全局安装virtualenv

$ pip install virtualenv

然后创建和激活虚拟环境:

# 创建虚拟环境
$ virtualenv my_virtualenv# 激活虚拟环境(同`venv`激活方式)
$ source my_virtualenv/bin/activate

使用conda环境管理器

对于数据科学和机器学习领域,Anaconda发行版的conda环境管理器是另一种广泛使用的虚拟环境工具。

创建conda环境:

# 创建名为my_conda_env的新conda环境,指定Python版本
$ conda create --name my_conda_env python=3.8

激活conda环境:

$ conda activate my_conda_env

安装和管理包:

(my_conda_env) $ conda install numpy pandas scikit-learn

退出conda环境:

(my_conda_env) $ conda deactivate

综合比较

  • venv模块是Python标准库的一部分,无需额外安装,适用于简单的Python项目开发。
  • virtualenv提供了更多定制化选项,比如可以指定特定的Python解释器版本,适合复杂项目和跨平台使用。
  • conda环境不仅限于Python,还可以管理其他语言的库和软件包,尤其适合大数据分析和科学计算场景,因为它预装了许多科学计算相关的库,并且具备出色的包管理和版本管理能力。

虚拟环境与IDE集成

大多数现代集成开发环境(IDEs)都支持对Python虚拟环境的集成,使得在IDE内创建、激活和管理虚拟环境变得十分便捷。

例如,在PyCharm IDE中:

  1. 创建虚拟环境
  2. 打开或新建一个项目,进入"Settings/Preferences"。
  3. 在"Project Interpreter"选项中点击齿轮图标,选择"Add",然后选择"New Virtual Environment"。
  4. 指定虚拟环境名称、位置以及使用的Python解释器版本,然后点击"Create"。
  5. 激活并使用虚拟环境
  6. PyCharm会自动识别项目根目录下的虚拟环境,并将其作为默认的项目解释器。
  7. 通过IDE内的包管理界面,可以直接在此虚拟环境中安装、卸载和升级Python包。

同样地,Visual Studio Code也通过插件如"Python Extension"提供了类似的虚拟环境支持:

  • 使用VS Code的命令面板(快捷键Ctrl + Shift + PCmd + Shift + P),搜索"Python: Create New Virtual Environment"命令来创建新的虚拟环境。
  • 然后在工作区或用户设置中指定此虚拟环境作为Python的默认解释器。

venv虚拟环境

这里我们重点讲解使用Python内置venv模块创建虚拟环境

在 3.5 版本发生变更: 现在推荐使用 venv 来创建虚拟环境。

注意:pyvenv 是针对 Python 3.3 和 3.4 创建虚拟环境的推荐工具,并在python3.6中被弃用。

venv 模块支持创建轻量的“虚拟环境”,每个虚拟环境将拥有它们自己独立的安装在其 site目录中的 Python 软件包集合。

创建虚拟环境

通过执行 venv 指令来创建一个虚拟环境

python -m venv /path/to/new/virtual/environment

运行此命令将创建目标目录(父目录若不存在也将创建),并放置一个 pyvenv.cfg 文件在其中,文件中有一个 home 键,它的值指向运行此命令的 Python 安装。它还会创建一个 bin 子目录(在 Windows 上是 Scripts),其中包含 Python 二进制文件的副本或符号链接(视创建环境时使用的平台或参数而定)。它还会创建一个(初始为空的) lib/pythonX.Y/site-packages 子目录(在 Windows 上是 Lib\site-packages)。如果指定了一个现有的目录,这个目录就将被重新使用。

pyvenv.cfg

pyvenv.cfg 是虚拟环境的配置文件,这是一个文本文件,打开:

home = C:\Users\StoneWM\AppData\Local\Programs\Python\Python37
include-system-site-packages = false
version = 3.7.2

可以看出,配置文件中记录了 python 的路径和版本,虚拟环境是否使用系统的 site pakages,以及该虚拟环境所基于的本地python版本。

补充:--system-site-packages

Python 虚拟环境继承全局 site-packages 中的指定包|极客教程 (geek-docs.com)

Python 的虚拟环境工具 venv 允许我们创建独立的 Python 环境。默认情况下,虚拟环境是不会继承全局 site-packages 中的包的。然而,我们可以通过在创建虚拟环境时使用 --system-site-packages 参数来使其继承全局的 site-packages。

$ python3 -m venv --system-site-packages myenv

注意,是在创建虚拟环境的同时指定。

实战总结

我在桌面创建了一个工程目录,然后在里面写了个hello.py,然后打开cmd,进入该路径下,创建虚拟环境

于是,在桌面的文件夹里就出现了一个文件夹

这里多出的myvenv就是虚拟环境所在的目录。

打开看看

Include在创建后默认为空;

Lib就是存放虚拟环境依赖库的,里面就是site-packages子目录,再里面就是各种库

Scripts就是虚拟环境所用的解释器、pip等

其中,activate.bat是用来启动虚拟环境的,deactivate.bat是用来关闭虚拟环境的。

再就是pyvenv.cfg,打开看看

home表示本地python所在的安装目录;

include-system-site-packages表示是否包含本地python的库;

version表示该虚拟环境所基于的本地python的版本;

executable表示解释器所在路径;

command表示生成虚拟环境时所执行的命令,都是以绝对路径的形式展示。

注意,以上都是自动生成的,一般无需修改,但是,如果路径做了更改,就需要进行对应的修改。

创建好之后,在IDE中比如vscode中就会列出这个创建的虚拟环境,vscode可以实现自动管理,无需我们手动执行activate.bat。

删除虚拟环境

有时候,我们可能不需要虚拟环境,就可以将其删除,然后直接使用本地的环境

下面我们将详细介绍删除 Python3 虚拟环境的几种方法。

方法一:手动删除虚拟环境

我们可以手动删除虚拟环境的文件夹来删除整个虚拟环境。首先,我们需要知道虚拟环境的位置,这是通过在命令行中运行以下命令得到的:

python3 -m venv ENV_NAME

其中 ENV_NAME 是你创建虚拟环境时指定的名称。通过运行上述命令,我们可以得到虚拟环境的位置。

在知道了虚拟环境的位置之后,我们可以使用以下命令来删除整个虚拟环境:

rm -rf ENV_NAME

这将删除虚拟环境及其包含的文件和文件夹。请注意,删除操作是不可逆的,一旦删除,数据将无法恢复。因此在删除之前,请确保你不再需要该虚拟环境。

方法二:使用 venv 自带的 deactivate 命令

除了手动删除虚拟环境的文件夹,venv 还提供了一个内置命令来退出虚拟环境。这个命令叫做 deactivate。在虚拟环境中运行该命令后,你将会退出虚拟环境并返回到系统默认的 Python 环境。

使用方法很简单,在虚拟环境中运行以下命令即可:

deactivate

这将退出虚拟环境并返回到系统默认的 Python 环境,你可以继续在系统中使用全局安装的 Python 版本。

方法三:使用 PyCharm 删除虚拟环境

如果你使用的是 PyCharm 这样的 Python 集成开发环境,你可以使用它提供的图形界面来删除虚拟环境。在 PyCharm  中,打开你的项目并导航到 File -> Settings -> Project -> Project Interpreter。在项目解释器的下拉列表中,你会看到所有可用的虚拟环境。选择你要删除的虚拟环境,点击右侧的减号图标,并确认删除操作。

PyCharm 将会删除所选虚拟环境的文件和文件夹,并将其从项目中移除。

根据你的实际情况,你可以选择其中的一种方法来删除不再需要的虚拟环境。记住,在删除虚拟环境之前,请务必备份重要的项目数据,以免误删导致不可恢复的损失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/414044.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C/C++】C++类与对象基本概念(抽象封装、类的定义与使用、构造函数、析构函数、静态成员、友元)

目录 七、类与对象基本概念7.1 抽象7.2 类的定义与声明7.3 访问控制7.4 类的实现与使用7.5 对象指针、this指针与对象引用7.6 构造函数7.7 析构函数7.8 拷贝构造函数7.9 类类型作为函数参数7.10 对象数组7.11 静态成员7.12 常对象与常成员(const)7.13 友…

讲个SystemVerilog disable语句的坑

前言 记录个使用SystemVerilog disable语句时遇到的坑,这个坑有点反直觉,以至于我当时有点不信,觉得可能是EDA仿真工具的问题。后来查看了SystemVerilog手册和使用不同EDA工具进行验证,才慢慢接受了。结论是:SystemVe…

ctfshow之web58~web71

目录 web58 思路一: 思路二: 思路三: web59~web65 web66~web67 web68~web70 web71 web58 if(isset($_POST[c])){$c $_POST[c];eval($c); }else{highlight_file(__FILE__); } PHP eval() 函数介绍 定义和用法 eval() 函数把字符串按…

新型蜜罐有哪些?未来方向如何?

前言:技术发展为时代带来变革,同时技术创新性对蜜罐产生推动力。 一、新型蜜罐的诞生 技术发展为时代带来变革,同时技术创新性对蜜罐产生推动力,通过借鉴不同技术思想、方法,与其它技术结合形成优势互补,…

python内置模块time详解(我们需要了解的多种时间格式)

Python的time模块提供了各种与时间相关的函数。我们可以获取当前时间、操作时间日期、计算两个时间差等。 时间有两种标准表示法: 数字表示: 整数或浮点数,通常是自从1970年1月1日以来的秒数。9个整数组成的元组:元组项包含年份,月份&#…

Diffusion 模型生成图片太慢了?用 AE(AutoEncoder) 和 VAE 加速一波!

Diffusion 模型生成图片太慢了?用 AE(AutoEncoder) 和 VAE(Variational AutoEncoder) 压缩图片加速一波! 本文分为两个部分:理论学习和代码实践。 先预览一下 AE 和 VAE 模型的效果: 理论学习 本文价值 Diffusion 模型生成图片的效…

图像识别智能垃圾桶项目开发--语音命令识别垃圾

一、项目思维导图 二、语音模块配置信息 三、项目程序 main.c garbage.c garbage.h uartTool.c //串口发送数据 uartTool.h

台式机CPU温度90℃以上-排查思路

虽然现在台式机不值钱。 但是对于穷苦老百姓来说,还是害怕它坏掉,坏掉就又需要花钱买了。 ①风扇清理所有灰尘(风扇的散热网是可以拆下来的), 主板清理所有灰尘(用画笔或者干燥的牙刷,注意是…

编程效率进阶:打造你专属的 Git 别名与 PyCharm 完美结合

在日常开发中,Git 是我们不可或缺的工具。掌握常用 Git 命令可以帮助我们更高效地进行版本控制,但随着命令的复杂性增加,记住所有命令变得困难。这时,Git 别名的设置就显得尤为重要。此外,许多开发者使用 PyCharm 作为…

TypeScript与vue

一、为组件的props标注类型 - 在没有使用TS之前,是这样接受props: - 在TS环境中,是这样接受props: - 对于props的可选项如何限制呢? 1、类型限制 类型限制在接收的时候就已经定义好了 2、可选属性(必填限制…

c# net8调用vc写的dll

dll程序(vc,x86) 头文件 extern "C" int __declspec(dllexport) WINAPI add(int a, int b);实现 int WINAPI add(int a, int b) {return a b; }c#/net8 函数声明: [DllImport("dll/Dll1.dll", CallingConvention CallingCo…

c++中的匿名对象及内存管理及模版初阶

目录 c中的匿名对象 日期到天数的转换 深入理解析构 深入理解拷贝构造 内存管理 全局变量和static变量的区别; malloc/calloc/realloc的区别 new和delete的意义? operator new与operator delete函数 对比malloc和new operator 定制operator ne…

switch语句和while循环

switch语句和while循环 switch语句break的用法default的用法switch语句中的case和default的顺序问题 while语句while语句的执行流程while语句的具体例子 switch语句 switch 语句是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重 的 else if…

Markdown语法与Latex公式汇总

1 基本语法 1.1 标题 语法如下: 效果如下: 1.2 字体样式 语法效果普通正文字体普通正文字体*倾斜字体*倾斜字体**加粗字体**加粗字体***倾斜加粗字体***倾斜字体~~划线字体~~倾斜字体 1.3 分割线 语法如下: 效果如下: …

鸿蒙项目签名配置

配置需要以下四个文件: 1. p12文件 2. csr文件 3. cer文件 打开AGC平台 点击申请调试证书 4. p7b文件 最后在项目中进行配置 配置项目的module.json5中

NASAVIIRS数据下载

目录 Visible Infrared Imaging Radiometer Suite(VIIRS)NOAA 数据下载用户注册 数据查找1.选择产品类型2. 数据索引3. 提交订单 Visible Infrared Imaging Radiometer Suite(VIIRS) 来自 Suomi NPP 的可见光红外成像辐射计套件 …

学习如何更好向GPT提问

如今以chatgpt为首的各种语言大模型应运而出,已经逐渐应用到平时的工作和学习中,但就算是使用同一种大模型提问同一个问题也有不同的答案,如何更快更好的获取优质答案是应该关心和学习的重点。 本文在《成为提问工程师》书的基础上加以整理总…

【Python系列】 Python 中的枚举使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

求解组合优化问题的具有递归特征的无监督图神经网络

文章目录 ABSTRACT1 Introduction2 Related Work3 QRF-GNN方法4 数值实验4.1 MAX-CUT4.2 COLORING5 conclusionABSTRACT 介绍了一种名为QRF-GNN的新型算法,有效解决具有二次无约束二进制优化(QUBO)表述的组合问题。依赖无监督学习,从最小化的QUBO放松导出的损失函数。该架构…

【软件工程】软件生命周期(生存周期)

考点3 软件生命周期(生存周期) 一、定义 软件产品或软件系统从设计、投入使用到被淘汰的全过程。 二、3周期 题目 一、判断题 二、选择题