【Django3.2学习】01-虚拟环境及创建项目

虚拟环境

​ 当我们开发过程中,遇到了需要在一台机子上运行多个项目,这些项目的python解释器或者依赖包版本存在差异的时候,如果不借助虚拟环境,那么我们只能通过频繁的install以及uninstall不同版本的python解释器或者依赖包,这样做显然是不可取的,像这种情况下,我们可以通过虚拟环境来分配不同的Python解释器及依赖包

Virtualenvs

​ 我们如果安装多个不同的版本的模块或者解析器,最好采用虚拟环境(Virtualenvs)来开发,使用下面的命令安装virtualenv:

# 虚拟环境的依赖库
pip install virtualenv

# 虚拟环境的外壳操作库,提供了一系列的全局命令
pip install virtualenvwrapper

# 兼容windows(如果不是windows系统则不需要)
pip install virtualenvwrapper-win

​ 虚拟环境的外壳操作库的操作命令:

命令参数选项描述
workon列出当前系统中所有的虚拟环境
workon<虚拟环境名称>进入指定名称的虚拟环境中,路径左边就会出现虚拟环境名称,在有虚拟环境的名称时,终端下所有基于pip安装的python包和python环境都会保存在对应的虚拟环境目录下
mkvirtualenv<虚拟环境名称>-p 指定python解析器版本创建一个指定名称的虚拟环境,一个虚拟环境就是一个目录
deactieve在虚拟环境内部退出环境
pip freeze列出当前环境下开发者使用pip安装的包列表,作用类似于pip list,但是比pip list好用
pip freeze > ./requirements.txtrequirements.txt 不是固定的,但是建议这么命名备份虚拟环境中的所有依赖包列表并保存到执行名称的文件中,这个文件名一般叫做requirements.txt
pip install -r ./requirements.txt还原备份的虚拟环境包列表,pip会逐行读取文件中的每一行内容并根据内容安装对应版本的python包
rmvirtualenv<虚拟环境名称>删除指定名称的虚拟环境[慎重使用,删除前建议备份]

创建Django项目并运行

创建项目

​ 创建虚拟环境djdemo

C:\Users\Abo>mkvirtualenv djdemo
created virtual environment CPython3.9.11.final.0-64 in 701ms
  creator CPython3Windows(dest=C:\Users\Abo\Envs\djdemo, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\Abo\Ap
pData\Local\pypa\virtualenv)
    added seed packages: pip==22.0.4, setuptools==61.0.0, wheel==0.37.1
  activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

​ 由上述命令执行结果可以看到虚拟环境创建到了dest=C:\Users\Abo\Envs\djdemo这个目录下

​ 之后便可以查看当前有多少虚拟环境

(djdemo) C:\Users\Abo>workon

Pass a name to activate one of the following virtualenvs:
==============================================================================
djdemo

​ 在此虚拟环境下安装django:

(djdemo) C:\Users\Abo>pip install django
Collecting django
  Downloading Django-4.0.3-py3-none-any.whl (8.0 MB)
     ---------------------------------------- 8.0/8.0 MB 7.6 MB/s eta 0:00:00
Collecting tzdata
  Downloading tzdata-2022.1-py2.py3-none-any.whl (339 kB)
     ------------------------------------- 339.5/339.5 KB 1.0 MB/s eta 0:00:00
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.4.2-py3-none-any.whl (42 kB)
Collecting asgiref<4,>=3.4.1
  Using cached asgiref-3.5.0-py3-none-any.whl (22 kB)
Installing collected packages: tzdata, sqlparse, asgiref, django

​ 可以看到未指定版本时默认下载的就是最新版本的DjangoDownloading Django-4.0.3-py3-none-any.whl (8.0 MB) ,而下载过程中的其他依赖包都是周边依赖,其左右就是服务Django的依赖包

​ 使用pip freeze 或者 pip list 查看当前虚拟环境下的依赖包:

(djdemo) D:\PythonDevelop\WorkSpace>pip freeze
asgiref==3.5.0
Django==4.0.3
sqlparse==0.4.2
tzdata==2022.1

​ 之后便可以在虚拟环境的\Lib\site-packages目录下看到这个环境下安装的依赖包

​ 之后在虚拟环境中切换目录至创建Django项目的目录下执行创建Django项目的命令django-admin startproject 项目名称

(djdemo) D:\PythonDevelop\WorkSpace>django-admin startproject djdemo

​ 之后就可以在D:\PythonDevelop\WorkSpace目录下看到刚才创建的Django项目了

结构介绍

​ 使用Pycharm打开刚才创建的Django项目,结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVqc9pvm-1648287007413)(C:/Users/Abo/AppData/Roaming/Typora/typora-user-images/image-20220326164122318.png)]

djdemo
├── djdemo
│       └── _init_.py
│       └── asgi.py
│       └── settings.py
│       └── urls.py
│       └── wsgi.py
├── manage.py
  • djdemo:与项目同名的包,主应用开发目录,项目生成时就指定好的包
    • init.py:包初始化文件
    • asgi.py:django3.0以后新增的,用于让django运行在异步编程模式的一个web应用对象
    • settings.py:保存项目所有的配置信息。所有和项目相关的配置都保存在里面。
    • urls.py:用来做url与视图函数映射的。以后来了一个请求,就会从这个文件中找到匹配的视图函数。
    • wsgi.py:项目和WSIG协议兼容的web服务器入口,部署的时候需要用到的,一般情况下也时不需要修改的。
  • manage.py:终端工具文件,以后和项目的交互基本都是基于这个文件(脚手架)。一般都是在终端输入python manage.py [子命令]。可以输入python manage.py help看下能做什么事情。除非你知道你自己在做什么,一般情况下不应该编辑这个文件。

切换虚拟环境

​ 打开终端输入pip freeze查看当前依赖:

PS D:\PythonDevelop\WorkSpace\djdemo> pip freeze
distlib==0.3.4
filelock==3.6.0
pbr==5.8.1
platformdirs==2.5.1
six==1.16.0
stevedore==3.5.0
virtualenv==20.14.0
virtualenv-clone==0.5.7
virtualenvwrapper==4.8.4
virtualenvwrapper-win==1.2.7

​ 可以看到上述依赖包并不是我们刚才创建的djdemo这个虚拟环境下的依赖包,而是全局依赖包,接下来我们切换虚拟环境

  • 打开设置,找到Python 解释器,我们可以看到这里默认选择的Python的解释器是全局解释器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rMniFQYt-1648287007415)(C:/Users/Abo/AppData/Roaming/Typora/typora-user-images/image-20220326170208667.png)]

  • 点击解释器右侧小齿轮,点击ADD

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r2F3vjMd-1648287007415)(C:/Users/Abo/AppData/Roaming/Typora/typora-user-images/image-20220326170258539.png)]

  • 由于使用的虚拟环境是Virtualenvs,所以选择Virtualenv Enviroment,之后选择已经存在的环境(Existing enviroment),然后找到刚才创建的虚拟环境目录下的\Scripts\python.exe

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEADytnR-1648287007416)(C:/Users/Abo/AppData/Roaming/Typora/typora-user-images/image-20220326170525051.png)]

  • 然后点击OK,我们可以看到此时Python解释器已经切换到我们刚才选择的解释器了,解释器后面的括号里写的djdemo就是虚拟环境的名称,而这里的依赖包就是我们虚拟环境中的依赖包

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2KpZZTu4-1648287007417)(C:/Users/Abo/AppData/Roaming/Typora/typora-user-images/image-20220326170642683.png)]

  • 最后还需要设置下终端方式:Settings -> Tools -> Terminal 然后将 Shell path 修改成cmd.exe即可,之后再打开终端就能看到自动进入到了虚拟环境djdemo, 之后项目中对依赖包的操作只会影响到djdemo这个虚拟环境下的依赖包,而不会影响到全局的python解释器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owCW5eJa-1648287007418)(C:/Users/Abo/AppData/Roaming/Typora/typora-user-images/image-20220326171452852.png)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值