Windows系统下python包管理器virtualenv的安装与使用

Windows系统下python包管理器virtualenv的安装与使用

安装virtualenv命令:

大致意思就是virtualenv安装成功,但是我的pip有新版本了,提示我可以更新。

virtualenv使用:

virtualenv官网

virtualenv命令格式:

virtualenv使用实例:

创建一个新的虚拟环境:

这里的虚拟环境目录名词是myproject,就这么简单的命令创建了一个虚拟环境。它位于myproject目录下。创建过程中如果没有报错就说明创建成功,同时它还指出了虚拟环境的Python版本,可以看到,就是我们系统当前安装的虚拟版本。
我们查看一下这个目录:

可以看到里面有两个目录和一个文件,

  • Lib目录是必须的库文件目录,
  • Scripts是虚拟环境的二进制命令文件目录以及启动器所在目录。启动器就是待会我们要用来激活虚拟环境的目录。
  • pyvenv.cfg文件是这个虚拟环境的配置文件

我们来尝试激活这个虚拟环境,命令如下:

此时没有任何输出,而且命令提示符的窗口也没有任何改变,怎么判断虚拟环境已经激活成功了呢?我们使用pip命令来判断一下,:

可以看到,这个时候的pip安装的包只有三个,分别是pip、setuptools、wheel。而我们实际的系统环境因为我一直在使用,我重新打开一个命令提示符窗口,直接执行pip list命令结果如下:

说明我们的虚拟环境确实激活成功了,只是看起来不明显。但是这个时候虚拟环境确实已经可以使用了。那么使用完毕后该怎么退出呢?启动是activate,那么退出就是deactivate。如下所示:

执行完deactivate命令后,再执行pip list命令,可以看到输出的是系统python的路径,这个时候说明已经从虚拟环境退出了。

但是这个过程确实不太明显,那么能不能把 虚拟环境弄的更明显一点呢,我们来看看–prompt这个选项的用法:

创建一个新的虚拟环境叫做myproject2,但是使用了–prompt myproject2的选项参数,我们再来尝试激活一下看看:

这个时候很明显就可以看到,在命令提示符前端出现了一个myproject2的提示,而当我们执行deactivate脚本后,提示符消失,说明回到了正常的环境。

这样就比较明显了。

上面的两个例子演示的是直接使用系统版本python安装的虚拟环境,既然是虚拟环境,那么python的版本能不能切换呢?我们来尝试一下-p选项的用法。

在上面的示例中,我尝试创建以python3.8来创建myproject3这个项目,但是失败了。它在系统里没有找到python3.8的版本。
我们知道,在windows中,不同的python是可以安装在不同的目录中,但是你系统使用哪个版本,就把哪个版本的路径添加到系统的环境变量最前面即可。刚才的例子里看到我目前使用的主版本是3.7.3,这个时候如果想要使用python3.8来创建虚拟环境的话,就需要告知3.8版本的实际路径:

这个时候就可以创建成功了,这里有两点需要注意:

  1. 必须给出python.exe文件的绝对路径
  2. 路径中如果有空格,则必须使用双引号括起。

创建成功以后,我们尝试激活

可以看到,确实是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
  • virtualenv的早些版本,还支持–-no-site-packages参数,用于控制建立虚拟环境时不将原版本中的第三方库拷贝过来,以便获得一个纯净的Python环境,最新版本中,去掉了该参数,默认直接使用–-no-site-packages模式。
  • –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,在进入到虚拟环境的时候,一般都会在命令提示符的最前面标识出虚拟环境的名称,便于区分实际环境和虚拟环境。而这个名称就是通过这个参数来配置的。

Windows系统下virtualenv常用命令:

 

参考:

https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480

https://www.jb51.net/article/181924.htm

承接各种网站开发与修改、爬虫、数据采集分析、小程序等任务

Html+Css+JS+PHP+Nodejs+Python

专治网站各种不服

一起探讨,互相学习,共同进步!有事儿您说话。

This entry was posted in Python and tagged by 织梦先生. Bookmark the permalink.