学习使用venv创建“python虚拟环境”

2024-06-22 23:52

本文主要是介绍学习使用venv创建“python虚拟环境”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

使用python开发会经常面临的问题是:你会需要不同版本的python,而且就算同一个版本的python,不同的项目有很大可能会需要不同版本的包。而 “Python虚拟环境” 就是为了解决这个问题的。

目标

结合官方文档,自己动手实践来学习使用 venv 创建python虚拟环境。

参考文档:
venv — Creation of virtual environments — Python 3.12.4 documentation
Install packages in a virtual environment using pip and venv - Python Packaging User Guide

venv官方文档介绍

venv官方文档 中对此的介绍是:

venv 支持创建轻量级的“虚拟环境”,每个虚拟环境将拥有独立的包,安装在其 site 目录。 虚拟环境是在当前存在的 Python 版本上创建的,这被称为虚拟环境的 “基础Python”。你还可以选择与基础环境中的包隔离开来(这样只有在虚拟环境中显式安装的包才是可用的)。

当在虚拟环境中时,常见安装工具如 pip 将把包安装到虚拟环境里(这并不需要显式地指明)。

除此之外,虚拟环境是:

  • 用来包含支持一个项目(库或应用程序)所需的特定 Python 解释器、库和二进制文件。 在默认情况下,它们将隔离于 “其他虚拟环境” 和 “操作系统” 中安装的 Python 解释器和库。
  • 包含在一个目录中,惯例上放在项目目录下的venv.venv文件夹,或是有许多虚拟环境的容器目录下,如 ~/.virtualenvs
  • 不应该被纳入 Git 等源代码管理系统。
  • 被视为是“可丢弃的” —— 应当能够简单地删除并从头开始重建。所以你不应在虚拟环境中放置任何项目代码。
  • 不被视为是可移动或可复制的 —— 你只能在目标位置重建相同的环境。

实践

0. 下载对应版本的python并安装

我这里需要3.6版本的python。平台是Windows。

打开python官方下载页面 https://www.python.org/downloads/windows/ 搜寻3.6版本的python。

3.6版本下还有多个微版本比如 3.6.15、3.6.13(关于版本号:根据官方文档所说,python版本号格式为 major.minor.micro)。

对我来说最方便的是“Windows平台安装包”。但是,并不是每个微版本都有这个安装包。我按时间搜索所有的3.6版本,发现3.6.8有我需要的安装包:
在这里插入图片描述
于是便选择此版本进行安装。
另外,我并没有选择将python加入PATH环境变量,毕竟我们现在考虑的是多版本的情况。
在这里插入图片描述
安装完成后,我的python.exe安装到了 C:\Users\yaksue\AppData\Local\Programs\Python\Python36\python.exe。

1. 创建虚拟环境

创建一个路径 G:\MyTest\test0622。这个test0622 空文件夹就作为我的项目。

而现在我将在我的项目中创建一个虚拟环境。使用命令是[python.exe路径] -m venv [项目路径]。我这里即是:
C:\Users\yaksue\AppData\Local\Programs\Python\Python36\python.exe -m venv G:\MyTest\test0622

(注意,按照官方文档的描述,惯例其实更应该放在项目文件夹下test0622\.venv,而非项目文件夹本身test0622。我这里做完测试才注意到,就不调整了)

在cmd中运行后,即创建了虚拟环境:
在这里插入图片描述
其中pyvenv.cfg文件中的home指向运行此命令的 Python 安装

home = C:\Users\yaksue\AppData\Local\Programs\Python\Python36
include-system-site-packages = false
version = 3.6.8

2. 激活虚拟环境

\Scripts路径下有个activate文件,运行它可以激活。比如我这里用于激活的命令就是:
G:\MyTest\test0622\Scripts\activate

可以看到,在进入虚拟环境之前,我是找不到python的:(因为我在PATH环境变量中没有python.exe的路径)
在这里插入图片描述

但当我输入激活的命令后:
在这里插入图片描述

在虚拟环境中就可以找到python:
在这里插入图片描述

3. 在虚拟环境中安装包

首先,激活虚拟环境(但是不运行python命令,否则会进入Python交互式环境)。
然后像之前一样运行 pip install即可,比如我这里想安装1.18.5版本的numpy,则运行:
pip install numpy==1.18.5
在这里插入图片描述
(我这里有个疑问,开始我没有指定版本,结果就如上图所示没找到,是否在虚拟环境中安装包必须指定版本吗?还是说是其他问题?)

安装完成后,可以看到 numpy 被安装到了虚拟环境的目录下:
在这里插入图片描述

4. 后续

后续只要在激活此虚拟环境的状态下,就可像往常一样,安装包和运行python脚本。

想要关闭此虚拟环境,可以运行deactivate命令。
(关闭cmd的窗口也会关闭此虚拟环境。如果再开一个新的cmd窗口,就要再激活一遍)

这篇关于学习使用venv创建“python虚拟环境”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085761

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT