官方文档:https://docs.python.org/zh-cn/3/tutorial/venv.html
Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。
这意味着一个Python安装可能无法满足每个应用程序的要求。如果应用程序A需要特定模块的1.0版本但应用程序B需要2.0版本,则需求存在冲突,安装版本1.0或2.0将导致某一个应用程序无法运行。
这个问题的解决方案是创建一个 virtual environment,一个目录树,其中安装有特定Python版本,以及许多其他包。
然后,不同的应用将可以使用不同的虚拟环境。 要解决先前需求相冲突的例子,应用程序 A 可以拥有自己的 安装了 1.0 版本的虚拟环境,而应用程序 B 则拥有安装了 2.0 版本的另一个虚拟环境。 如果应用程序 B 要求将某个库升级到 3.0 版本,也不会影响应用程序 A 的环境。
虚拟环境相当于一个抽屉,在这个抽屉中安装的任何软件包都不会影响到其他抽屉。并且在项目中,我可以指定这个项目的虚拟环境来配合我的项目。比如我们现在有一个项目是基于 Django2.20.x 版本,又有一个项目是基于 Django 1.1.x 的版本,那么这时候就可以创建两个虚拟环境,在这两个虚拟环境中分别安装 Django 2.20.x 和 Django 1.1.x 来适配我们的项目。
virtualenv 是用来创建虚拟环境的软件工具,我们可以通过 pip 或者 pip3 来安装:
pip install virtualenvpip3 install virtualenv#或者python -m pip install virtualenv
创建虚拟环境非常简单,通过以下命令就可以创建了:
virtualenv [虚拟环境的名字]#需要提前将virtualenv的绝对地址加入环境变量,如D:Program Files (x86)Python3.7Scripts
如果你当前的 Python3/Scripts 的查找路径在 Python2/Scripts 的前面,那么将会使用 python3 作为这个虚拟环境的解释器。如果 python2/Scripts 在 python3/Scripts 前面,那么将会使用 Python2 来作为这个虚拟环境的解释器。
虚拟环境创建好了以后,那么可以进入到这个虚拟环境中,然后安装一些第三方包,进入虚拟环境 在不同的操作系统中有不同的方式,一般分为两种,第一种是 Windows ,第二种是 linux:
1、windows 进入虚拟环境:进入到虚拟环境的 Scripts 文件夹中,然后执行 activate 。
2、linux 进入虚拟环境: source /path/to/virtualenv/bin/activate一旦你进入到了这个虚拟环境中,你安装包,卸载包都是在这个虚拟环境中,不会影响到外面的环境。
退出虚拟环境很简单,通过一个命令就可以完成:deactivate 。
在电脑的环境变量中,一般是不会去更改一些环境变量的顺序的。也就是说比如你的 Python2/Scripts 在 Python3/Scripts 的前面,那么你不会经常去更改他们的位置。但是这时候我确实是想在创建虚拟环境的时候用 Python3 这个版本,这时候可以通过 -p 参数来指定具体的 Python 解释器:
virtualenv -p C:Python36python.exe [virutalenv name]
E:studydjango_study1>virtualenv env1 #创建虚拟环境E:studydjango_study1>cd env1Scripts E:studydjango_study1env1Scripts>activate #启动虚拟环境(env1) E:studydjango_study1env1Scripts> #前面有(env1)代表已经启动虚拟环境(env1) E:studydjango_study1env1Scripts>deactivate.bat #退出虚拟环境E:studydjango_study1env1Scripts>
virtualenvwrapper 这个软件包可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通 过 virtualenv 来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。 安装 virtualenvwrapper:
#linux: pip install virtualenvwrapper #windows: pip install virtualenvwrapper-win # 或者python -m pip install virtualenvwrapper-win
virtualenvwrapper 基本使用
mkvirtualenv my_env
那么会在你当前用户下创建一个 Env 的文件夹,然后将这个虚拟环境安装到这个目录下。如果你电脑中安装了 python2 和 python3 ,并且两个版本中都安装了 virtualenvwrapper ,那么将会使用环境变量中第一个出现的 Python 版本来作为这个虚拟环境的 Python 解释器。
workon my_env
deactivate
rmvirtualenv my_env
lsvirtualenv
cdvirtualenv
在 我的电脑->右键->属性->高级系统设置->环境变量->系统变量 中添加一个参数 WORKON_HOME ,将这个参数的值设置为你需要的路径。
在使用 mkvirtualenv 的时候,可以指定 --python 的参数来指定具体的 python 路径:
mkvirtualenv --python==C:Python36python.exe hy_env
#安装E:studydjango_study2>python -m pip install virtualenvwrapper-win#创建虚拟环境并自动进入E:studydjango_study2>mkvirtualenv env2(env2) E:studydjango_study2>#进入虚拟环境E:studydjango_study2>workon env2(env2) E:studydjango_study2>ls#退出虚拟环境(env2) E:studydjango_study2>deactivate#列举虚拟环境E:studydjango_study2>lsvirtualenvdir /b /ad "C:甥敳獲AdministratorEnvs"==============================================================================env2#进入虚拟环境目录E:studydjango_study2>cdvirtualenvD:Program Files (x86)Python3.7>
使用命令行创建Django项目
进入虚拟环境并安装Django
(env2) E:studydjango_study2>python -m pip install django(env2) E:studydjango_study2>pip listPackage Version---------- -------asgiref 3.2.3Django 3.0.2pip 19.3.1pytz 2019.3setuptools 44.0.0sqlparse 0.3.0wheel 0.33.6
重新打开终端
E:studydjango_study2>workon env2(env2) E:studydjango_study2>django-admin startproject mysite
mysite - mysite # 对整个程序进行配置 - init #一个空文件,它告诉Python这个目录应该被看做一个Python包 - settings # 项目配置文件 - url # URL对应关系(路由) - wsgi # 遵循WSIG规范,uwsgi + nginx- manage.py # 一个命令行工具,可以使你用多种方式对Django项目进行交互
(env2) E:studydjango_study2>cd mysite(env2) E:studydjango_study2mysite>lsmanage.py mysite(env2) E:studydjango_study2mysite>python manage.py runserverWatching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run 'python manage.py migrate' to apply them.January 08, 2020 - 17:29:10Django version 3.0.2, using settings 'mysite.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.
然后使用浏览器浏览:http://127.0.0.1:8000/
E:studydjango_study2>workon env2(env2) E:studydjango_study2>django-admin startproject mysite(env2) E:studydjango_study2>lsmysite(env2) E:studydjango_study2>cd mysite(env2) E:studydjango_study2mysite>lsmanage.py mysite(env2) E:studydjango_study2mysite>python manage.py runserverWatching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run 'python manage.py migrate' to apply them.January 08, 2020 - 17:29:10Django version 3.0.2, using settings 'mysite.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.
使用pycharm创建Django会自动创建虚拟环境