Python 虚拟环境模块 venv 的使用和示例
virtualenv基本命令格式
这个模块比较简单,它只有一条命令,但是跟的选项比较多,就是通过不同的选项来控制生成不同的虚拟环境。我们先来简单看一下它的基本命令格式:
virtualenv [--version] [--with-traceback] [-v | -q] [--app-data APP_DATA] [--clear-app-data] [--discovery {builtin}] [-p py] [--creator {builtin,cpython3-win,venv}] [--seeder {app-data,pip}] [--no-seed] [--activators comma_sep_list][--clear] [--system-site-packages] [--copies] [--download | --no-download] [--extra-search-dir d [d ...]] [--pip version] [--setuptools version] [--wheel version] [--no-pip] [--no-setuptools] [--no-wheel] [--symlink-app-data] [--prompt prompt] [-h] dest
乍一看,选项怎么这么多,一下子就能把人看晕,这还怎么学。但是在最开始使用的时候,常用的参数就只有下面两个:
- -p py 用于选择python解释器版本的
- dest 要存放虚拟环境的目录,一般是项目目录
- --prompt prompt 设置虚拟环境命令提示符前端提示。
参数比较抽象,我们还是通过具体的例子来实践,
示例
先打开cmd命令行窗口,执行python命令,确认你的python包安装正确。如下所示
C:\Users\Administrator>python Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
然后我们来安装好virualenv模块,命令是:
C:\Users\Administrator>pip install virtualenv Looking in indexes: http://pypi.doubanio.com/simple Collecting virtualenv Downloading http://pypi.doubanio.com/packages/c1/61/7506ddd79ef6f09beeefb81c4c55bf395a8ad96b33ff1c6b06e40f8aa101/virtualenv-20.0.7-py2.py3-none-any.whl (8.0 MB) |████████████████████████████████| 8.0 MB 6.8 MB/s ...... Installing collected packages: virtualenv Successfully installed virtualenv-20.0.7
中间省略了一部分输出容,但是可以看到virtualenv模块安装成功。然后我们就来创建一个新的虚拟环境:
C:\Users\Administrator>virtualenv myproject created virtual environment CPython3.7.3.final.0-64 in 6317ms creator CPython3Windows(dest=C:\Users\Administrator\myproject, clear=False, global=False) seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:\Users\Administrator\AppData\Local\Temp\tmpsvdy5dr2\seed-app-data\v1) activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
这里的虚拟环境目录名词是myproject,就这么简单的命令创建了一个虚拟环境。它位于myproject目录下。创建过程中如果没有报错就说明创建成功,同时它还指出了虚拟环境的Python版本,可以看到,就是我们系统当前安装的虚拟版本。
我们查看一下这个目录:
C:\Users\Administrator\dir myproject 2020/03/02 17:04 <DIR> . 2020/03/02 17:04 <DIR> .. 2020/03/02 17:04 <DIR> Lib 2020/03/02 17:04 316 pyvenv.cfg 2020/03/02 17:04 <DIR> Scripts
可以看到里面有两个目录和一个文件,
- Lib目录是必须的库文件目录,
- Scripts是虚拟环境的二进制命令文件目录以及启动器所在目录。启动器就是待会我们要用来激活虚拟环境的目录。
- pyvenv.cfg文件是这个虚拟环境的配置文件
我们来尝试激活这个虚拟环境,命令如下:
# 切换到虚拟环境目录 C:\Users\Administrator>cd myproject # 激活虚拟环境 C:\Users\Administrator\myproject>Scripts\activate
此时没有任何输出,而且命令提示符的窗口也没有任何改变,怎么判断虚拟环境已经激活成功了呢?我们使用pip命令来判断一下,
C:\Users\Administrator\myproject>pip list Package Version ---------- ------- pip 20.0.2 setuptools 45.2.0 wheel 0.34.2
可以看到,这个时候的pip安装的包只有三个,分别是pip、setuptools、wheel。而我们实际的系统环境因为我一直在使用,我重新打开一个命令提示符窗口,直接执行pip list命令结果如下:
C:\Users\Administrator>pip list Package Version ------------------ --------- -ip 19.0.3 appdirs 1.4.3 attrs 19.3.0 backcall 0.1.0 bleach 3.1.0 colorama 0.4.3 decorator 4.4.1 defusedxml 0.6.0 distlib 0.3.0 Django 2.2 ....
说明我们的虚拟环境确实激活成功了,只是看起来不明显。但是这个时候虚拟环境确实已经可以使用了。那么使用完毕后该怎么退出呢?启动是activate,那么退出就是deactivate。如下所示:
C:\Users\Administrator\myproject>Scripts\deactivate.bat C:\Users\Administrator\myproject>pip list Package Version ------------------ --------- -ip 19.0.3 appdirs 1.4.3 attrs 19.3.0 backcall 0.1.0 bleach 3.1.0 colorama 0.4.3 decorator 4.4.1 defusedxml 0.6.0 distlib 0.3.0 Django 2.2 entrypoints 0.3
执行完deactivate命令后,再执行pip list命令,可以看到输出的是系统python的路径,这个时候说明已经从虚拟环境退出了。
但是这个过程确实不太明显,那么能不能把 虚拟环境弄的更明显一点呢,我们来看看--prompt这个选项的用法:
C:\Users\Administrator>virtualenv --prompt myproject2 myproject2
创建一个新的虚拟环境叫做myproject2,但是使用了--prompt myproject2的选项参数,我们再来尝试激活一下看看:
C:\Users\Administrator>cd myproject2 C:\Users\Administrator\myproject2>Scripts\activate myproject2C:\Users\Administrator\myproject2>Scripts\deactivate.bat C:\Users\Administrator\myproject2>
这个时候很明显就可以看到,在命令提示符前端出现了一个myproject2的提示,而当我们执行deactivate脚本后,提示符消失,说明回到了正常的环境。
这样就比较明显了。
上面的两个例子演示的是直接使用系统版本python安装的虚拟环境,既然是虚拟环境,那么python的版本能不能切换呢?我们来尝试一下-p选项的用法。
C:\Users\Administrator>virtualenv --prompt (myproject3) -p python3.8 myproject3 PEP-514 violation in Windows Registry at HKEY_LOCAL_MACHINE/PythonCore/2.7/InstallPath error: missing RuntimeError: failed to find interpreter for Builtin discover of python_spec='python3.8'
在上面的示例中,我尝试创建以python3.8来创建myproject3这个项目,但是失败了。它在系统里没有找到python3.8的版本。
我们知道,在windows中,不同的python是可以安装在不同的目录中,但是你系统使用哪个版本,就把哪个版本的路径添加到系统的环境变量最前面即可。刚才的例子里看到我目前使用的主版本是3.7.3,这个时候如果想要使用python3.8来创建虚拟环境的话,就需要告知3.8版本的实际路径:
C:\Users\Administrator>virtualenv --prompt (myproject3) -p "D:\Program Files (x86)\Python38\python.exe" myproject3 created virtual environment CPython3.8.2.final.0-64 in 6798ms creator CPython3Windows(dest=C:\Users\Administrator\myproject3, clear=False, global=False) seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:\Users\Administrator\AppData\Local\Temp\tmpxuz4d8ys\seed-app-data\v1) activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
这个时候就可以创建成功了,这里有两点需要注意:
- 必须给出python.exe文件的绝对路径
- 路径中如果有空格,则必须使用双引号括起。
创建成功以后,我们尝试激活
C:\Users\Administrator>cd myproject3 C:\Users\Administrator\myproject3>Scripts\activate (myproject3)C:\Users\Administrator\myproject3>python Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
可以看到,确实是3.8.2版本的Python,此时新版本的虚拟环境创建成功。
基本用法就是这么两个,linux系统下的操作和这里的类似,大家可以自己去尝试一下,如果有遇到什么问题可以留言和阿飞一起讨论。
实际使用的其他参数可以看一下下面的参数解析,写的比较详细,大家可以根据自己的需要来查看。
参数解析
如果将virtualenv的所有参数进行分类,主要分为下面几类:
1. 只用于输出信息的,包括下面几个:
- --version 输出virtualenv版本信息
- -h, --help 输出virtualenv帮助信息
- --with-traceback,在创建虚拟环境失败的时候,输出追踪信息。
- -v, --verbose,设置输出信息等级,一般用于增加信息输出等级,默认值是2
- -q, --quit,设置输出信息等级,一般用于降低信息输出等级,默认值是0
最后两个选项这里要解释一下,信息输出等级指的是virtualenv在执行命令过程中输出的信息等级,分为5个类,对应的值分别是:
- CRITICAL 0 灾难级信息
- ERROR 1 错误级信息
- WARNING 2 警告级信息
- INFO 3 普通信息
- DEBUG 4调试信息
- NOTEST 5 非测试信息
也就是说-q/--quit是将信息级别设置为CRITICAL,即只有灾难级信息才会输出,-v/--verbose 后面跟上对应的值,即可调整对应的信息级别。例如-v 4,即将信息级别调整为DEBUG级别。
2. 通用设置
即在使用virualenv命令的时候全局通用的配置,主要有:
- --app-data APP_DATA 用于配置virutalenv使用的缓存目录,默认是<temp 目录>,对于windows系统通常是%USERPROFILE%\AppData\Local\Temp这个目录,对于linux系统是/tmp目录。
- --clear-app-data virtualenv启动的时候使用空的app数据目录,默认值False,即默认使用缓存目录,便于加快虚拟环境创建。
3. 发现
发现这个配置是用来查找目标Python解释器的,当你创建虚拟环境的时候,你的虚拟环境以哪个Python解释器版本作为模板来创建呢?这个时候就需要用到发现这个组件来查找了。对应的选项有:
- --discovery {builtin} 解释器发现方法,默认值builtin,即内置的发现组件。现在好像只有这一个可以选择。也就是说,这个选项目前对于普通用户来说没什么用。除非你能够自己实现一个发现组件。
- -p py, --python py,用于创建虚拟环境的目标python解释器,即以这个参数指定的python解释器版本来创建虚拟环境。默认值是你当前安装virutalenv的python解释器。它有两种格式,分别是:
- I. python解释器的绝对路径。
- II. python版本的字符串表示,字符串的格式是{实现名称}{版本}{架构},例如python3.8.1, cpython3等。
4. 创造器(creator)
创造器在virtualenv里的作用是,实际执行虚拟环境创建过程的工具。它对应的选项有:
- --creator {builtin, cpyhon3-win, venv},即通过哪个python解释器来创建虚拟环境,默认是builtin,即安装virtualenv的python版本。
- dest,即安装虚拟环境的目标目录,可以使用相对路径和绝对路径
- --clear,当目标目录存在的时候,会移除目标目录,或者覆盖目标文件,默认值False
- --system-site-packages, 允许虚拟环境访问系统site-packages目录,默认值False
- --copies, --always-copy,使用复制而不是链接来创建虚拟环境,即使平台的默认配置是使用链接的方式。默认值True。创建虚拟环境有两种方式,第一种是复制模板Python里的文件到虚拟环境中,第二种方式是从模板Python那里创建软链接到虚拟环境中,第二种速度更快,但是虚拟环境受到模板Python的影响也更大。因此一般推荐使用copy的方式。
5. 种子器(seeder)
种子器指的是什么呢?我们知道python的包管理软件是pip,但是还有另外两个管理软件,分别是setuptools和wheel。而种子器就是决定虚拟环境中,安装这三个软件中的哪几个。有了包管理软件,才能安装更多的包。就像种子发芽成熟后能结出更多的种子。所以叫seeder这样一个名字。对应的选项有:
- --seeder {app-data, pip},种子包安装方法,默认值app-data,即从缓存目录里安装。
- --no-seed, --without-pip,即不安装种子包(默认值False)
- --download 从PyPI上下载安装最新版本的pip/setuptools/wheel,默认值False
- --no-download, --never-download,不下载最新版的pip/setuptools/wheel,默认值True
- --extrea-search-dir,种除了默认的Python安装的包以外,种子器可能会使用的包含其他包的路径,默认值是[]
- --pip version, --wheel version, --setuptools version,要安装的pip,wheel,setuptools版本,默认值都是latest
- --no-pip,--no-wheel,--no-setuptools,不安装pip,wheel,setuptools,默认值都是False
- --symlink-app-data,从app-data目录链接python包到虚拟环境(目前还不支持,要求种子pip>=19.3,默认值False)
6. 启动器(activator)
虚拟环境配置好以后,我们怎么进入到虚拟环境,以及怎么让虚拟环境里的配置生效呢?这个时候就需要用到启动器了,启动器的作用是,在shell或者系统的环境变量里面,把虚拟环境的可执行命令路径添加到最前面。保证在虚拟环境中,最先找到的命令是虚拟环境里的命令。同样的,当虚拟环境用完以后,我们需要回到正常的环境,这个时候还需要提供虚拟环境的关闭功能。这两个功能都是在启动器里实现的。它对应的配置选项有:
- --activator comma_sep_list, 要生成的启动器列表,用逗号分隔。因为你在不同的系统中使用的是不同的shell,例如linux中有bash、tcsh、dash、zsh等,windows中有powershell,cmd等。因此针对不同的环境需要使用不同的启动器。这个参数就是让你说明你要生成哪些环境的启动器。
- --prompt prompt,在进入到虚拟环境的时候,一般都会在命令提示符的最前面标识出虚拟环境的名称,便于区分实际环境和虚拟环境。而这个名称就是通过这个参数来配置的。
上一篇: pyenv
下一篇: Python的登录注册界面跳转汽车主页面
推荐阅读
-
使用matplotlib在Python中实现正弦信号的时域波形和频谱图示例
-
封装 Python 和调用 C++ 模块的陷阱(使用 pyinstaller 和 pybind11)
-
使用 python smtplib 模块发送 SSL/TLS 安全电子邮件的示例
-
使用 Python 的 smtplib 和电子邮件模块收发电子邮件。
-
使用 pyautogui 模块的 Python 鼠标和键盘自动操作示例
-
Python 的 openpyxl 模块安装和基本使用(excel 管理)
-
使用适用于 Windows 上 Python 3.7 的 venv 模块创建虚拟环境
-
Python 虚拟环境模块 venv 的使用和示例
-
使用 pyenv-win 和 pyenv-win-venv 管理 Windows 上的 Python ????
-
包婷婷 (201550484)作业一 统计软件简介与数据操作-SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 R统计软件介绍 R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。 与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。 该语言的语法表面上类似 C,但在语义上是函数设计语言(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在"语言上计算"(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。 R是一个免费的*软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。 二、R语言 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点: 1.R是*软件。这意味着它是完全免费,开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。[2] 2.R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。[2] 3. 所有R的函数和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.[2] 4.R具有很强的互动性。除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF文件。另外,和其他编程语言和数据库之间有很好的接口。[2] 5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地.[2] R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。 但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。[3] 。 R语言的下载可以通过CRAN的镜像来查找。 R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由 中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和 USTC提供的。 三、stata Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过Stata. Journal获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是Statalist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 四、PYTHON