10 KiB
python3小白课:虚拟环境使用
上节课我们安装好了虚拟环境,这节课我们来教会大家基本的使用,关于其他使用命令,日常不常用的,我就不讲解了,讲多了大家也记不住。
接着上节课我们打开了一个cmd窗口对吧,目前还是没有任何虚拟环境的。
创建虚拟环境
mkvirtualenv test
回车,就创建好了,你可以使用workon查看到生成了一个名为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也是一个激活的命令,后面我们会讲到。
如图,命令提示符最后一行的最左侧恢复了正常。
激活或切换虚拟环境
如上面的截图例子所示,我们的当前目录在C:\Users\xueshanlinghu这个路径下,我们可以切换当前工作目录到你要激活的那个虚拟环境目录下的Scripts文件夹下,如E:\ProgramFiles\virtualpython\test\Scripts,在这里我们可以运行
activate
即可激活虚拟环境。
但我一般很少这样操作。还记得我们上节课学习过的可以通过workon命令查看当前有多少个虚拟环境吗,它会把所有虚拟环境的名字罗列出来。你如果知道你要进入哪个虚拟环境的名字,可以在任意工作目录下输入命令:
workon test
这样我们可以更轻松进行虚拟环境的激活了,test这个虚拟环境名你可以换成你的。通常推荐大家这样用。
顺便,我们来看一下pip list和pip --version的运行效果:
可以看到,都是单独的。
删除虚拟环境
[!question]
当某虚拟环境不准备再使用了怎么办?
那就删除呗。
你可以到虚拟环境的文件夹将该虚拟环境文件夹直接删除即可。
我个人一般会用命令删除:
rmvirtualenv test
这样就可以把test这个虚拟环境删除了。其实就是前面加了rm,应为remove移除的意思,很好理解和记忆。
安装其他版本的python的虚拟环境
这里我们的系统环境python是3.8.2版本,我们拿安装python2.7.18和python3.6.6版本的虚拟环境为例跟大家做讲解,其他的可以举一反三。
安装包下载(我也会在课程中提供给大家,这里均为64位的安装包为例):
- python3.6.6:https://www.python.org/ftp/python/3.6.6/python-3.6.6-amd64.exe
- python2.7.18:https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi
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解释器的绝对路径,如果路径中没有空格可以不加引号,如果有需要加上引号,我建议你都加上就好了。写完后再写上需要创建的虚拟环境名称即可。
你看,成功了!
python2.7.18虚拟环境创建
由于安装包是msi的后缀,所以稍微跟python3的有一点点小区别。
安装时注意点我就不多说了,参考我们之前安装python的时候,需要注意的是不要选择添加到环境变量,默认就是不选的,按默认的就行:
这里我安装到了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
可以看到,确实使用了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 | mk,make创建、制造的简写,virtualenv虚拟环境 |
| deactivate | 让...停止工作,就是退出激活的意思 |
| activate | 激活 |
| rmvirtualenv | rm,remove移除的简写,virtualenv虚拟环境 |








