为了解决维护不同应用程序对应不同版本的问题,Python 使用了虚拟环境的概念。 虚拟环境是 Python 解释器的完整副本。在虚拟环境中安装三方包时只会作用到虚拟环境,全局 Python 解释器不受影响。
在 python 3.3 以上的版本中,创建虚拟环境的功能已经成为内置模块
一、创建项目目录
先找个合适的文件夹创建项目目录,我将这个项目目录命名为 Python-venv-test。我想完全在 Win10 的命令行终端中操作这个教程:
- 找到合适的根目录打开
cmd
-

-

-
输入
cmd后回车,弹出第 4 步的终端窗口
-
注意到此时的根目录已经是
F:\,而不是默认启动在 C 盘
- 创建项目文件夹

二、创建虚拟环境
默认情况下在 Python 3.3 及更高版本中虚拟环境已经成为内置模块,可以直接通过如下命令来创建它:
$ python -m venv venv
命令执行完成后,当前目录下就会新增一个名为 venv 的目录来存储这个虚拟环境的相关文件。
使用这个命令来让 Python 运行 venv 包,它会创建一个名为 venv 的虚拟环境。命令中的第一个“venv”是 Python 创建虚拟环境的模块的名称,第二个是虚拟环境名称。如果你觉得这样很混乱,可以用你自定义的虚拟环境名字替换第二个 venv。我习惯在项目目录中创建名为 venv 的虚拟环境,所以无论何时cd到一个项目中,都会找到相应的虚拟环境。
三、激活虚拟环境
创建完毕之后还需要激活才能够进入这个虚拟环境。 要激活你的全新虚拟环境,需使用以下命令:
$ venv\Scripts\activate # 这相当于调用刚刚新建的虚拟环境中的激活方法 activate.bat
(venv) $ _
当前目录是虚拟环境的名称,这表明你已经在激活的虚拟环境中了:

四、安装第三方库
激活一个虚拟环境,终端会话的环境配置就会被修改,之后你键入 python 的时候,实际上是调用的虚拟环境中的 Python 解释器。 此外,终端提示符也被修改成包含被激活的虚拟环境的名称的格式。这种激活是临时的和私有的,因此在关闭终端窗口时它们将不会保留,也不会影响其他的会话。 那么,当你需要同时打开多个终端窗口来调试不同的应用时,每个终端窗口都可以激活不同的虚拟环境而不会相互影响。
一般 pip 下载会很慢,可以参考 Python- 解决PIP下载安装速度慢
(venv) $ pip install --user -U pip # 更新 pip,也可以不更新。
...
(venv) $ pip install flask
...
(venv) $ pip install django
...
更新 pip 的问题:
可以参考我的《python 虚拟环境中更新 pip,解决 PermissionError 问题》
- 如果使用
pip install -U pip的时候遇到"PermissionErro"无权访问磁盘读取的问题,按照网上的教程在命令中赋予用户权限:pip install --user -U pip。但由于安装出错,原来的 pip 已经卸载了,所以要手动删掉 venv 文件夹重新创建虚拟环境。- 如果一开始就使用
python -m pip install --upgrade pip来更新 pip,也会提示安装成功,但这是使用了全局安装过的 pip,而不是在这个虚拟环境中。运行pip list还可以看到以前安装的其他第三方包。所以,解决办法跟上面一样,重来,然后运行pip install --user -U pip。
五、退出虚拟环境
直接敲:
(venv) $ deactivate

六、删除虚拟环境
我不知道怎么做,我直接手动删掉 venv 文件夹了……
本文详细介绍如何在Python3.3及以上版本中使用内置模块创建、激活、退出和删除虚拟环境,以及在虚拟环境中安装第三方库的过程。
691

被折叠的 条评论
为什么被折叠?



