博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的venv 模块 -- 创建虚拟化的项目环境
阅读量:6351 次
发布时间:2019-06-22

本文共 1857 字,大约阅读时间需要 6 分钟。

前言

在使用 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 

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

$ python3 -m venv 

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

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

3.进入/退出虚拟化环境

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

MacOS 或 Linuxbash/zsh    $ source 
/bin/activatefish $ .
/bin/activate.fishcsh/tcsh $ source
/bin/activate.cshWindowscmd.exe C:\>
\Scripts\activate.batPowerShell PS C:\>
\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 这个参数可以设置是否开启“引用系统中的模块”的功能。如果开启了,那么当你就可以直接使用系统中已经装过的第三方模块。(但是你在虚拟环境下装的模块就不能被其他地方的程序使用)

转载地址:http://sutla.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
Mysql备份和恢复策略
查看>>
linux17-邮件服务器
查看>>
AS开发JNI步骤
查看>>
Android NDK开发:JNI基础篇
查看>>
使用Maven命令快速建立项目结构
查看>>
类的生命周期
查看>>
android中在代码中设置margin属性
查看>>
SQL开发利器SQL Prompt
查看>>
二分查找,php
查看>>
必看的 jQuery性能优化的38个建议 (转)
查看>>
oracle 常用DBA管理脚本--数据库构架体系
查看>>
小记开发过程中一个问题,以及python库加载
查看>>
python面试题-django相关
查看>>
[LeetCode] Lowest Common Ancestor of a Binary Tree
查看>>
运用Merge Into实现增加或更新数据
查看>>
Python——eventlet.greenthread
查看>>
使用sphinx创建和查看文档
查看>>
记大众点评之面试经历
查看>>
ABAP中查找代码的标准程序
查看>>