虚拟环境的使用与开发环境的搭建
这节课我们来学习如何使用虚拟环境搭建 Django 的开发环境。
首先你需要明白什么是 环境
,这里的 环境
指的是 Python 代码运行的环境,包含 Python 解释器(python.exe)、Python 库的位置(lib 文件夹,包括其中的 site-packages)、可执行程序的位置(scripts 文件夹)。
如果你直接使用 pip install 包名
,那么这个包就会默认安装到 Python 环境的 site-packages 目录下。
虚拟环境(Virtual Environment)
如果我们想要搭建一个 Django 的开发环境的话,需要使用 Python 创建一个虚拟环境。
虚拟环境其实就是 Python 环境的一个副本,是一个用于在项目级别隔离 Python 包和依赖项的工具。它允许你在同一台机器上的不同项目中使用不同的 Python 包和版本,以防止包之间的冲突,并确保项目的依赖关系不会相互干扰。
当你创建一个虚拟环境时,它会在你的项目目录中创建一个独立的 Python 解释器和相关的库文件。在这个虚拟环境中,你可以自由地安装和管理项目所需的 Python 包,而不会影响到全局安装的 Python 包。
为什么要使用虚拟环境?简单地说就是为了解决依赖冲突的问题,如果你把所有的项目放在同一个环境下,不同的项目对同一个库的依赖可能会要求不同的版本,从而产生冲突
包隔离
:使用虚拟环境可以确保每个项目都有自己的独立环境,不会相互干扰。这样,即使两个项目需要不同版本的相同包,它们也可以在各自的虚拟环境中进行安装,不会产生冲突。依赖管理
:虚拟环境使得项目的依赖管理更加简单和清晰。你可以明确定义项目所需的所有包及其版本,并在虚拟环境中安装它们,从而确保每个项目都有一致的依赖项。方便迁移
:使用虚拟环境可以方便地将整个项目及其依赖打包,并在其他环境中重新创建相同的开发环境,这使得项目的迁移和共享变得更加容易。节省空间
:由于虚拟环境只包含项目所需的包,不会包含全局安装的所有包,因此可以节省磁盘空间。
之所以在开发时选择虚拟环境,除了避免库之间的冲突之外,还有一个重要的原因是方便部署。因为虚拟环境是独立的,仅包含项目相关的依赖库,所以部署的效率更高,风险更小。
1. 命令行创建虚拟环境
Python 3.3 之前的版本,只能通过第三方库 virtualenv
创建虚拟环境。3.3 之后的版本则自带了一个用于创建和管理虚拟环境的模块称为 venv
,可以来代替 virtualenv 工具,好处就是不需要单独安装一个第三方库了。
由于我本人一直使用的是 virtualenv
,因此,这里我用 virtualenv 来创建虚拟环境。
a. 安装 virtualenv 与 virtualenvwrapper
virtualenvwrapper
对 virtualenv
的命令进行了封装,使得其更加友好。
pip install virtualenv virtualenvwrapper-win
注意
安装的顺序不能颠倒,virtualenvwrapper 必须依赖于 virtualenv。
如果本地安装了多套 Python 系统环境,我们并不需要在每一套环境上都安装 virtualenv
,因为 Virtualenv
可以 -p
参数来设定 Python 解释器的路径,通过给出的解释器路径就能定位整个 Python 安装环境,进而可以复制相关文件,构造基于该版本的虚拟环境。所以,通常在系统默认的 Python 环境下安装一份就够了。
安装完毕后,使用如下命令检测 virtualenv
是否安装成功:
virtualenv --version

b. 创建虚拟环境
我们可以使用 virtualenv
与 mkvirtualenv
两种方式来创建虚拟环境。mkvirtualenv
是 virtualenvwrapper
中的命令,只是对 virtualenv
命令的封装,使它更易于使用。
virtualenv venv_test_1
mkvirtualenv venv_test_2
上述命令使用的是当前默认的 Python 系统环境,如果想以系统上安装的其他环境为基础构建虚拟环境,可以使用 -p 参数指定 Python 解释器的位置即可,例如这样:
virtualenv -p "C:\Lib\Python\Python 3.8.6\python.exe" venv_test_1
注意
如果 Python 解释器路径上有空格,记得使用双引号包裹。
创建好的虚拟环境,我们可以使用 pip list
来查看虚拟环境中的所有的包。

默认安装有:pip,wheel 和 setuptools,有一些教程会建议使用 --no-site-packages 来创建虚拟环境,这样创建出来的虚拟环境是没有这三个包的,但是 --no-site-packages已经在新版本的Virtualenv中废弃了,详情可以参考文档:https://virtualenv.pypa.io/en/latest/reference/#virtualenv-command

c. 如何使用虚拟环境
安装并创建完成虚拟环境之后,我们最后来看看如何使用虚拟环境。
首先就是查看所有的虚拟环境命令:workon

在这里,我们可以看到使用 mkvirtualenv
创建的虚拟环境,但是不会显示 virtualenv
创建的虚拟环境
d. 使用(进入)虚拟环境
workon
后面加虚拟环境名称表示进入(使用)虚拟环境
workon venv_test_2

e. 退出虚拟环境命令
deactive
f. 删除虚拟环境
rmvirtualenv 虚拟环境名称
表示删除虚拟环境。

g. 更改 mkvirtualenv 默认新建虚拟环境的路径
虚拟环境默认存 C 盘,日后可能会变得超大,C 盘直接见红,怎么才能更改虚拟环境的默认存放位置呢?
首先,我们先创建一个用来存放虚拟环境的文件夹。
然后打开 我的电脑 - 属性 - 高级系统设置 - 环境变量
,在系统变量里添加这个 WORKON_HOME 变量,然后把刚才的文件夹路径填进去。
2. 使用 PyCharm 创建虚拟环境
我们可以在使用 PyCharm 创建 Django 项目的时候,直接创建新的虚拟环境。

或者我们可以在 settings
中找到 Python Interpreter
添加新的 Python 解释器。

创建 Django 项目
安装 Django 的方法与创建虚拟环境一致,也是分为命令行创建和 PyCharm 创建 Django 项目。
1. PyCharm 创建 Django 项目
我们可以直接把虚拟环境中的 Python 解释器导入到 PyCharm 中,在创建 Django 项目的时候,直接使用新创建的虚拟环境。

这样我们就成功的创建了一个 Django 项目。

2. 命令行创建 Django 项目
Django 的本质上是 Python 语言的 一个库,所以我们可以在虚拟环境中通过 pip 工具安装,指定 Django 4.2 版本,并使用镜像源。
pip install django==4.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成之后,我们可以使用 pip list
命令来查看,Django 及其相关的依赖是否安装成功。

接着,我们就可以在命令行中新建或者进入你想创建Django项目的目录,然后输入下面的命令:
django-admin startproject 你的项目名称

这样,我们就可以在当前文件夹下,找到我们的项目目录了。

这样,我们的 Django 项目就创建完成了。创建完成之后,我们需要使用 PyCharm 以项目方式打开该项目。

把当前项目的解释器设置为我们使用的虚拟环境,并且把全局应用,也设置为虚拟环境的 Python 解释器。

配置完成之后,我们就可以点击右上角运行该项目。

点击该链接,即可进入本地 Web 服务页面。

这样,我们的 Django 项目就创建完成了。