python中的venv 模块 -- 创建虚拟化的项目环境

简介: 前言在使用 python 制作网页的过程中,我们往往需要先将站点的目录“虚拟化”。虚拟化其实就是将当前文件下程序的运行环境与整个系统的环境隔离。那么为什么我们要将一个项目虚拟化呢?1.不进行虚拟化会产生的问题在平时使用 python 时,有可能会遇到这几个常见的问题:1.当运行的项目处于不同版本时(如 python 2.7/3.7 ),要通过切换 python 解释器的版本来运行程序(或要使用 python2/3 pip/pip3 等指令来对应不同的版本)。

前言

在使用 python 制作网页的过程中,我们往往需要先将站点的目录“虚拟化”。虚拟化其实就是将当前文件下程序的运行环境与整个系统的环境隔离。那么为什么我们要将一个项目虚拟化呢?

1.不进行虚拟化会产生的问题

在平时使用 python 时,有可能会遇到这几个常见的问题:

1.当运行的项目处于不同版本时(如 python 2.7/3.7 ),要通过切换 python 解释器的版本来运行程序(或要使用 python2/3 pip/pip3 等指令来对应不同的版本)。

2.有时做一个项目要用到许多第三方模块,但是其他项目基本不会用。如果直接 pip install 到系统中,项目删除后清除安装过的模块会很麻烦。

3.做完一个项目后,你希望能够不再一次安装它依赖的模块,就能在另外一个系统上直接运行。

4.你的项目暂时运行在一个旧版的第三方模块上,而新版的第三方模块不兼容你所写的程序。你既希望能够让原来的项目在旧版本上继续正常运行,又希望能够在另一个项目中使用新版本。

如果你遇到过上面这四个问题,并且希望能够改善这一些繁琐的配置过程,那么你就可以尝试对你的项目进行“虚拟化”。

**
学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以私信回复小编“学习”或者评论,留言,点赞 领取全套免费python学习资料、视频()装包**

2.创建一个虚拟化项目

python 自带了一个非常简便的虚拟化模块 - venv 。在 python 3.5 及之前的版本,创建一个虚拟化项目的指令为:

$ python -m venv <directory>

而在 3.6 之后的版本中,指令变成了

$ python3 -m venv <directory>

其中在 3.4 及之前的版本中,初始化一个环境是不会自带 pip 的。而在 3.4 之后,可以添加 --without-pip 这个参数来去掉 pip 包。

当然,venv还有 --copies 参数,它就可以在创建时把系统已有的模块复制进去。不过一般这个不常用。(因为系统里装的模块可能已经很多了)如果真的要使用系统中的模块,请参考第四小节的设置。

3.进入/退出虚拟化环境
成功创建了虚拟化的环境之后,我们需要先进入这个环境(不然 pip 还是会装在系统中)。我们可以使用以下指令来进入环境。其中 是你项目文件夹的路径。

MacOS 或 Linux

bash/zsh    $ source <venv>/bin/activate

fish    $ . <venv>/bin/activate.fish

csh/tcsh    $ source <venv>/bin/activate.csh

Windows

cmd.exe C:\> <venv>\Scripts\activate.bat

PowerShell  PS C:\> <venv>\Scripts\Activate.ps1

cometeme$ source /Users/cometeme/Documents/example/bin/activate
(example)cometeme$```

可以看到前面多了一个(example)的提示,说明我们已经进入到虚拟环境中了。在虚拟环境里,我们可以像正常一样操作里面的文件,或是安装第三方模块,只不过这一些都只会影响到本地的内容了。

当我们想要退出虚拟环境时,我们可以输入 deactivate 这个指令来退出。
**
4.设置虚拟环境**

在虚拟环境的根目录下,我们可以看到一个叫 pyvenv.cfg 的文件。用文本编辑器打开后可以看到这几行内容:

home = /Library/Frameworks/Python.framework/Versions/3.7/bin
include-system-site-packages = false
version = 3.7.0

其中, home 指的是系统中 python 模块的安装位置。除非你自定义过了,不然这个默认值就是对的。

include-system-site-packages 这个参数可以设置是否开启“引用系统中的模块”的功能。如果开启了,那么当你就可以直接使用系统中已经装过的第三方模块。(但是你在虚拟环境下装的模块就不能被其他地方的程序使用)
相关文章
|
8天前
|
Shell Linux Ruby
Python3虚拟环境venv
`venv` 是 Python 的虚拟环境工具,用于为不同项目创建独立的运行环境,避免依赖冲突。通过 `python3 -m venv` 命令创建虚拟环境,并使用 `source bin/activate` 激活。激活后,所有 Python 包将安装在该环境中,不影响系统全局环境。退出环境使用 `deactivate` 命令。每个虚拟环境拥有独立的包集合,确保项目间的隔离性。删除虚拟环境只需删除其目录即可。
65 34
|
14天前
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
39 1
|
21天前
|
Shell 程序员 开发者
轻松搞定在Python中构建虚拟环境
本教程教你如何使用业界公认的最佳实践,创建一个完全工作的Python开发环境。虚拟环境通过隔离依赖项,避免项目间的冲突,并允许你轻松管理包版本。我们将使用Python 3的内置`venv`模块来创建和激活虚拟环境,确保不同项目能独立运行,不会相互干扰。此外,还将介绍如何检查Python版本、激活和停用虚拟环境,以及使用`requirements.txt`文件共享依赖项。 通过本教程,你将学会: - 创建和管理虚拟环境 - 避免依赖性冲突 - 部署Python应用到服务器 适合新手和希望提升开发环境管理能力的开发者。
|
25天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
28 3
|
28天前
|
Python
探索Python虚拟环境:virtualenv、venv与pipenv比较
在Python开发中,有效的环境管理至关重要。virtualenv、venv和pipenv是常用的虚拟环境管理工具。virtualenv支持Python 2.7+和3.3+,可创建独立环境;venv为Python 3.3+内置库,简单轻量但功能有限;pipenv则结合了包管理和虚拟环境管理,生成Pipfile.lock确保依赖确定性和安全性,推荐作为首选工具。
|
27天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
121 80
|
5天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
36 5
Python高性能编程:五种核心优化技术的原理与Python代码

热门文章

最新文章