学习使用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

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没