python3xiaobaike_2020/chapter6/6-10 python3小白课:虚拟环境使用.md
2025-04-20 23:22:14 +08:00

10 KiB
Raw Blame History

python3小白课虚拟环境使用

上节课我们安装好了虚拟环境,这节课我们来教会大家基本的使用,关于其他使用命令,日常不常用的,我就不讲解了,讲多了大家也记不住。

接着上节课我们打开了一个cmd窗口对吧目前还是没有任何虚拟环境的。

创建虚拟环境

mkvirtualenv test

回车,就创建好了,你可以使用workon查看到生成了一个名为test的虚拟环境,并且直接激活进入了该虚拟环境。

图6-10-1 创建test虚拟环境

这里mkvirtualenv就是创建新的虚拟环境的命令,你记住mk即可,应该是英文单词make制造。后面跟随的是空格和虚拟环境的名字,它会在之前的WORKON_HOME路径下创建一个以这个名字命名的文件夹,所以你的名字也别太花哨了,文件夹名不支持的字符不要作为名字哦~比如我们这里就是名字为test,到资源管理器中查看该路径,确实该文件夹已经创立。

这种命令的写法默认会使用你当前的系统python的版本创建一个虚拟环境。

像这种创建方法你可以直接进入到新虚拟环境中,大家可以看到在上图中命令提示符最后一行的最左侧多了(test)这样的标识,这就是已进入虚拟环境的标志。在虚拟环境进入后,我们可以输入python进入当前虚拟环境版本的python shell,也可以使用python py文件名pip命令来使用虚拟环境。这时你若使用pip install 包名命令安装的包只会存在于虚拟环境不会安装到系统的python环境这就能让项目的三方包环境非常整洁干净未来你需要看一下这个项目用了哪几个三方包版本号是多少的时候就会极其方便。

Note

如果你感兴趣可以到虚拟环境的存放目录看一下虚拟环境跟普通已安装好的python有什么区别。

可以发现其实就是将已安装的python进行虚拟化复制一份文件夹也做了一些优化让它可以作为独立环境运行。


退出已激活的虚拟环境

[!question]

创建好了虚拟环境,怎么退出呢?

deactivate

activate是激活的意思,加上否定前缀就是不激活咯,就是退出虚拟环境了,而activate也是一个激活的命令,后面我们会讲到。

图6-10-2 退出虚拟环境

如图,命令提示符最后一行的最左侧恢复了正常。


激活或切换虚拟环境

如上面的截图例子所示,我们的当前目录在C:\Users\xueshanlinghu这个路径下,我们可以切换当前工作目录到你要激活的那个虚拟环境目录下的Scripts文件夹下,如E:\ProgramFiles\virtualpython\test\Scripts,在这里我们可以运行

activate

即可激活虚拟环境。

但我一般很少这样操作。还记得我们上节课学习过的可以通过workon命令查看当前有多少个虚拟环境吗,它会把所有虚拟环境的名字罗列出来。你如果知道你要进入哪个虚拟环境的名字,可以在任意工作目录下输入命令:

workon test

图6-10-3 workon激活虚拟环境test

这样我们可以更轻松进行虚拟环境的激活了,test这个虚拟环境名你可以换成你的。通常推荐大家这样用。

顺便,我们来看一下pip listpip --version的运行效果:

图6-10-4 虚拟环境下的pip

可以看到,都是单独的。


删除虚拟环境

[!question]

当某虚拟环境不准备再使用了怎么办?

那就删除呗。

你可以到虚拟环境的文件夹将该虚拟环境文件夹直接删除即可。

我个人一般会用命令删除:

rmvirtualenv test

这样就可以把test这个虚拟环境删除了。其实就是前面加了rm,应为remove移除的意思,很好理解和记忆。

图6-10-5 删除虚拟环境test


安装其他版本的python的虚拟环境

这里我们的系统环境python是3.8.2版本我们拿安装python2.7.18和python3.6.6版本的虚拟环境为例跟大家做讲解,其他的可以举一反三。

安装包下载我也会在课程中提供给大家这里均为64位的安装包为例

python3.6.6虚拟环境创建

安装很简单,跟之前学习的差不多,需要注意的是,不要选择添加到环境变量就可以了。

图6-10-6 python3.6.6安装

这里比如我安装在E:\ProgramFiles\virtualpython\purepython\python3.6.6目录下。

安装完成后复制一份该文件夹到当前目录下。复制后,就可以到系统程序与功能-卸载或更改程序那里将python3.6.6版本卸载掉了,这样可以让系统不那么乱,更绿色。卸载后,将刚才备份的文件夹重命名跟复制前python3.6.6一样。

完成后即可在cmd输入命令创建了例如

mkvirtualenv -p "E:\ProgramFiles\virtualpython\purepython\python3.6.6\python.exe" py36
mkvirtualenv --python "E:\ProgramFiles\virtualpython\purepython\python3.6.6\python.exe" py36

Tip

上面两种方法均可以创建,任选一种即可,我个人喜欢第一种。-p参数后面跟上你安装的其他版本python的python.exe解释器的绝对路径如果路径中没有空格可以不加引号如果有需要加上引号我建议你都加上就好了。写完后再写上需要创建的虚拟环境名称即可。

图6-10-7 创建python3.6.6的虚拟环境

你看,成功了!

python2.7.18虚拟环境创建

由于安装包是msi的后缀所以稍微跟python3的有一点点小区别。

安装时注意点我就不多说了参考我们之前安装python的时候需要注意的是不要选择添加到环境变量默认就是不选的按默认的就行

图6-10-8 python2.7.18安装

这里我安装到了E:\ProgramFiles\virtualpython\purepython\python2.7.18这个文件夹下。复制一下这个文件夹。

接下来这一步很重要,你需要到C:\Windows\System32这个目录,搜索python27.dll这个文件并拷贝到另一个地方备份。

然后到系统程序与功能-卸载或更改程序那里将python2.7.18版本卸载了,卸载完成后,将刚才复制备份的文件夹修改回python2.7.18这个文件夹名。

python27.dll这个文件还原到C:\Windows\System32这个目录。

这样绿色版的python2.7.18就制作好了。

你可以输入命令来创建一个python2.7的虚拟环境了:

mkvirtualenv -p "E:\ProgramFiles\virtualpython\purepython\python2.7.18\python.exe" py27

图6-10-9 创建python2.7.18的虚拟环境

可以看到确实使用了python2.7.18的版本。

Tip

在python2语法中打印输出使用的是print 要打印的内容这样的写法而在python3中变成了print(要打印的内容)你可以很好地辨别用的是python2还是python3请知悉。


冻结项目所用的包

之前我们在学习解锁心仪的三方包的时候,学习过可以使用pip freeze > requirements.txt命令来冻结所用到的三方包的情况,我们来举个例子。

我们分别在cmd中输入下面的命令

workon py36   # 切换py36虚拟环境
pip install requests  # 安装requests三方包及相关包
pip list  # 查看目前的pip列表
pip freeze > requirements.txt  # 冻结目前所用的所有三方包保存到文件
type requirements.txt  # cmd中打开文本文件并打印输出所有内容

运行结果如下:

Microsoft Windows [版本 10.0.18363.778]
(c) 2019 Microsoft Corporation保留所有权利

C:\Users\xueshanlinghu>workon py36
(py36) C:\Users\xueshanlinghu>pip install requests
Collecting requests
  Downloading requests-2.23.0-py2.py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 363 kB/s
Collecting certifi>=2017.4.17
  Using cached certifi-2020.4.5.1-py2.py3-none-any.whl (157 kB)
Collecting chardet<4,>=3.0.2
  Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Using cached urllib3-1.25.9-py2.py3-none-any.whl (126 kB)
Collecting idna<3,>=2.5
  Using cached idna-2.9-py2.py3-none-any.whl (58 kB)
Installing collected packages: certifi, chardet, urllib3, idna, requests
Successfully installed certifi-2020.4.5.1 chardet-3.0.4 idna-2.9 requests-2.23.0 urllib3-1.25.9

(py36) C:\Users\xueshanlinghu>pip list
Package    Version
---------- ----------
certifi    2020.4.5.1
chardet    3.0.4
idna       2.9
pip        20.0.2
requests   2.23.0
setuptools 46.1.3
urllib3    1.25.9
wheel      0.34.2

(py36) C:\Users\xueshanlinghu>pip freeze > requirements.txt

(py36) C:\Users\xueshanlinghu>type requirements.txt
certifi==2020.4.5.1
chardet==3.0.4
idna==2.9
requests==2.23.0
urllib3==1.25.9

(py36) C:\Users\xueshanlinghu>

换一个项目,所用的包不同,则你可以再创建一个新项目的虚拟环境,在里面任意折腾,当不需要时,删除该虚拟环境即可。

我们退出虚拟环境再看一下系统python的pip list有没有什么变化,结果如下:

(py36) C:\Users\xueshanlinghu>deactivate

C:\Users\xueshanlinghu>pip list
Package               Version
--------------------- -------
appdirs               1.4.3
distlib               0.3.0
filelock              3.0.12
pip                   20.0.2
setuptools            46.1.3
six                   1.14.0
virtualenv            20.0.18
virtualenvwrapper-win 1.2.6

C:\Users\xueshanlinghu>

可以看到,只有之前安装virtualenv的一些相关的包,清清爽爽,干干净净。

单词释义

单词 释义
mkvirtualenv mkmake创建、制造的简写virtualenv虚拟环境
deactivate 让...停止工作,就是退出激活的意思
activate 激活
rmvirtualenv rmremove移除的简写virtualenv虚拟环境