2、开发环境搭建:Python虚拟环境、pip换源、Django安装、创建第一个项目、项目结构解析

好,咱们正式开始动手了。

搭建开发环境这件事,说实话,很多新手觉得没啥技术含量。但我见过太多人在这步栽跟头——项目做着做着,依赖包冲突了,版本对不上了,最后只能删掉重来。嗯,咱们从一开始就把地基打牢。

2.1 Python虚拟环境:为什么必须用?

先问个问题:你电脑上可能同时有好几个Python项目。项目A用Django 4.2,项目B用Django 3.2。如果不隔离,你装一个就会把另一个搞坏。

虚拟环境就是干这个的。它给每个项目一个独立的Python解释器空间,互不干扰。

核心概念:虚拟环境本质就是一个文件夹,里面复制了一份Python解释器和pip工具。激活后,你安装的所有包都只存在这个文件夹里。

我个人习惯用Python自带的 venv 模块,轻量、够用。当然你也可以用 virtualenvconda,但 venv 是官方推荐,不需要额外安装。

创建虚拟环境

打开终端,进入你的项目目录(比如 django_course),然后执行:

python -m venv venv

这条命令会创建一个名为 venv 的文件夹。名字可以随便起,但业内约定俗成叫 venv.venv

激活虚拟环境

不同操作系统命令不一样,我列个表给你看:

操作系统 激活命令
Windows (CMD) venv\Scripts\activate
Windows (PowerShell) venv\Scripts\Activate.ps1
macOS / Linux source venv/bin/activate

激活成功后,终端前面会出现 (venv) 字样。这时候你安装的所有包,都只在这个环境里生效。

小技巧:我习惯在项目根目录下建一个 .gitignore 文件,把 venv/ 写进去。这样虚拟环境不会被提交到Git仓库,避免给别人造成麻烦。

2.2 pip换源:下载速度翻倍

pip默认从国外官方源下载包,速度嘛……你懂的。我曾经等一个 pip install django 等了五分钟,最后超时报错。后来我学乖了,换成国内镜像源。

常用的国内镜像源有这些:

镜像源名称 URL
阿里云 https://mirrors.aliyun.com/pypi/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣 https://pypi.douban.com/simple/

有两种换源方式:临时换源和永久换源。

临时换源

安装时加个 -i 参数就行:

pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

永久换源

修改pip配置文件。Windows在 %APPDATA%\pip\pip.ini,macOS/Linux在 ~/.pip/pip.conf。写入以下内容:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn

注意:有些公司内部有私有PyPI源,如果你在公司网络下,建议先问清楚再用公共镜像,避免安全问题。

2.3 Django安装:一行命令搞定

确保虚拟环境已激活,然后执行:

pip install django

这条命令会安装最新稳定版的Django。如果你想指定版本,比如4.2 LTS(长期支持版):

pip install django==4.2

安装完成后,验证一下:

python -m django --version

如果输出版本号,说明安装成功。

我的习惯:安装完Django后,我会立刻执行 pip freeze > requirements.txt,把当前环境的依赖包列表保存下来。这样以后换电脑或者部署时,直接 pip install -r requirements.txt 就能恢复环境。

2.4 创建第一个项目

Django提供了一个命令行工具 django-admin,用来快速创建项目骨架。

django-admin startproject myproject

这条命令会在当前目录下创建一个 myproject 文件夹,里面就是Django项目的初始结构。

然后进入项目目录,启动开发服务器:

cd myproject
python manage.py runserver

看到类似这样的输出,就说明成功了:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 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.

Django version 4.2, using settings 'myproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

打开浏览器,访问 http://127.0.0.1:8000/,你会看到Django的默认欢迎页面——一个小火箭图标,告诉你"It worked!"

注意:那个关于未应用迁移的警告不用慌。Django自带了一些数据库表(比如用户、会话等),需要先创建数据库才能应用。我们后面会讲。

2.5 项目结构解析

现在咱们看看 myproject 文件夹里都有什么:

myproject/
├── manage.py
└── myproject/
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

我来逐个解释每个文件的作用:

manage.py

这是项目的管理脚本。几乎所有Django命令都要通过它来执行,比如 runserverstartappmigrate 等。说白了,它就是你和Django交互的入口。

myproject/ 内部文件夹

这个和项目同名的文件夹,是项目的Python包。里面放着核心配置文件。

  • __init__.py:空文件,告诉Python这个文件夹是一个包。Python 3.3+其实可以没有它,但保留是惯例。
  • settings.py:项目的总配置文件。数据库、静态文件、中间件、应用注册……所有全局配置都在这里。这是你以后打交道最多的文件之一。
  • urls.py:URL路由配置。浏览器访问哪个地址,对应哪个视图函数,都在这里定义。
  • asgi.py:异步服务器网关接口。如果你要用WebSocket或异步功能,会用到它。初学者暂时不用管。
  • wsgi.py:Web服务器网关接口。生产环境部署时,Nginx或Apache通过它和Django通信。开发阶段用不到。

我的经验:刚学Django时,我总喜欢把代码全写在 settings.py 里,结果文件越来越长,找配置像大海捞针。后来我学会了拆分——把数据库配置、第三方服务配置、本地开发配置分别放到不同文件里,再用 from .base import * 导入。这个技巧后面会详细讲。

2.6 避坑指南

最后,分享几个我踩过的坑:

  • 虚拟环境没激活就装包:我曾经在系统Python里装了Django,然后在虚拟环境里运行项目,结果报错说找不到模块。检查了半天才发现环境搞混了。记住:每次打开终端,第一件事就是激活虚拟环境。
  • pip版本太旧:有时候 pip install 会报一些奇怪的错误,比如 Could not find a version that satisfies the requirement。先升级pip试试:python -m pip install --upgrade pip
  • 端口被占用:默认的8000端口可能被其他程序占用了。可以用 python manage.py runserver 8080 指定其他端口。
  • 不要用root或管理员身份运行:开发服务器用普通用户权限就够了。用管理员身份运行,万一代码有漏洞,攻击者能直接拿到系统权限。

好了,环境搭好了,项目也跑起来了。下一章咱们开始写真正的代码——创建应用、定义模型、写视图。到时候你会发现,Django的开发流程其实非常顺畅。


公众号:蓝海资料掘金营,微信deep3321