Skip to content

开发环境搭建

本章将详细介绍如何搭建Django开发环境,包括Python安装、虚拟环境配置、Django安装以及开发工具的选择和配置。

系统要求

操作系统支持

Django支持以下操作系统:

  • Windows 10/11
  • macOS 10.15+
  • Linux (Ubuntu, CentOS, Debian等)

Python版本要求

python
# Django 4.2 LTS 支持的Python版本
Python 3.8+   # 最低要求
Python 3.9    # 推荐
Python 3.10   # 推荐
Python 3.11   # 推荐
Python 3.12   # 最新支持

Python安装

Windows系统

1. 从官网下载Python

访问 Python官网 下载最新版本:

bash
# 下载地址
https://www.python.org/downloads/windows/

# 推荐下载
Python 3.11.x (stable)

2. 安装Python

bash
# 安装选项
 Add Python to PATH
 Install for all users
 Associate files with Python
 Create shortcuts for installed applications
 Add Python to environment variables
 Precompile standard library

3. 验证安装

cmd
# 打开命令提示符
python --version
# 输出: Python 3.11.x

pip --version
# 输出: pip 23.x.x from ...

macOS系统

1. 使用Homebrew安装(推荐)

bash
# 安装Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装Python
brew install python@3.11

# 验证安装
python3 --version
pip3 --version

2. 从官网下载安装

bash
# 下载地址
https://www.python.org/downloads/macos/

# 安装后验证
python3 --version
pip3 --version

Linux系统

Ubuntu/Debian

bash
# 更新包列表
sudo apt update

# 安装Python 3.11
sudo apt install python3.11 python3.11-pip python3.11-venv

# 验证安装
python3.11 --version
pip3 --version

CentOS/RHEL

bash
# 安装EPEL仓库
sudo yum install epel-release

# 安装Python 3.11
sudo yum install python311 python311-pip

# 验证安装
python3.11 --version
pip3 --version

虚拟环境配置

虚拟环境是Python开发的最佳实践,它可以为每个项目创建独立的Python环境。

为什么使用虚拟环境

python
# 问题场景:不同项目需要不同版本的包
项目A: Django==3.2.0, requests==2.25.0
项目B: Django==4.2.0, requests==2.28.0

# 解决方案:为每个项目创建独立的虚拟环境
venv_project_a/
├── Django==3.2.0
└── requests==2.25.0

venv_project_b/
├── Django==4.2.0
└── requests==2.28.0

使用venv创建虚拟环境

1. 创建虚拟环境

bash
# Windows
python -m venv django_env

# macOS/Linux
python3 -m venv django_env

2. 激活虚拟环境

bash
# Windows
django_env\Scripts\activate

# macOS/Linux
source django_env/bin/activate

# 激活后命令提示符会显示
(django_env) C:\Users\YourName>

3. 停用虚拟环境

bash
# 任何系统
deactivate

使用conda创建虚拟环境

如果你使用Anaconda或Miniconda:

bash
# 创建虚拟环境
conda create -n django_env python=3.11

# 激活环境
conda activate django_env

# 停用环境
conda deactivate

# 列出所有环境
conda env list

# 删除环境
conda env remove -n django_env

虚拟环境最佳实践

bash
# 1. 为每个项目创建独立的虚拟环境
mkdir my_django_project
cd my_django_project
python -m venv venv

# 2. 使用有意义的环境名称
python -m venv blog_project_env
python -m venv ecommerce_env

# 3. 将虚拟环境目录添加到.gitignore
echo "venv/" >> .gitignore
echo "*.pyc" >> .gitignore
echo "__pycache__/" >> .gitignore

# 4. 创建requirements.txt记录依赖
pip freeze > requirements.txt

# 5. 从requirements.txt安装依赖
pip install -r requirements.txt

Django安装

安装Django

bash
# 确保虚拟环境已激活
(django_env) $ pip install Django

# 安装特定版本
(django_env) $ pip install Django==4.2.7

# 安装最新LTS版本
(django_env) $ pip install "Django>=4.2,<5.0"

验证Django安装

bash
# 检查Django版本
(django_env) $ python -m django --version
# 输出: 4.2.7

# 或者在Python中检查
(django_env) $ python
>>> import django
>>> django.get_version()
'4.2.7'
>>> django.VERSION
(4, 2, 7, 'final', 0)

安装额外依赖

bash
# 数据库驱动
pip install psycopg2-binary  # PostgreSQL
pip install mysqlclient      # MySQL
pip install cx_Oracle        # Oracle

# 图片处理
pip install Pillow

# 开发工具
pip install django-debug-toolbar
pip install django-extensions

# API开发
pip install djangorestframework

# 创建完整的requirements.txt
pip freeze > requirements.txt

开发工具选择

代码编辑器/IDE

1. Visual Studio Code(推荐)

json
// .vscode/settings.json
{
    "python.defaultInterpreterPath": "./venv/bin/python",
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "python.formatting.provider": "black",
    "python.formatting.blackArgs": ["--line-length=88"],
    "files.associations": {
        "*.html": "django-html"
    },
    "emmet.includeLanguages": {
        "django-html": "html"
    }
}

推荐扩展:

json
// .vscode/extensions.json
{
    "recommendations": [
        "ms-python.python",
        "ms-python.flake8",
        "ms-python.black-formatter",
        "batisteo.vscode-django",
        "wholroyd.jinja",
        "bradlc.vscode-tailwindcss"
    ]
}

2. PyCharm Professional

python
# PyCharm配置
# File -> Settings -> Project -> Python Interpreter
# 选择虚拟环境中的Python解释器

# Django支持
# File -> Settings -> Languages & Frameworks -> Django
# Enable Django Support: ✓
# Django project root: /path/to/your/project
# Settings: settings.py

3. Sublime Text

json
// Packages/User/Python.sublime-settings
{
    "python_interpreter": "/path/to/venv/bin/python",
    "suppress_word_completions": true,
    "suppress_explicit_completions": true
}

数据库工具

1. SQLite Browser

bash
# 安装SQLite Browser
# Windows: 下载安装包
# macOS: brew install --cask db-browser-for-sqlite
# Ubuntu: sudo apt install sqlitebrowser

2. pgAdmin (PostgreSQL)

bash
# 安装pgAdmin
# 访问 https://www.pgadmin.org/download/

3. MySQL Workbench

bash
# 安装MySQL Workbench
# 访问 https://www.mysql.com/products/workbench/

版本控制

Git配置

bash
# 安装Git
# Windows: https://git-scm.com/download/win
# macOS: brew install git
# Linux: sudo apt install git

# 配置Git
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 创建.gitignore文件
cat > .gitignore << EOF
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
venv/
ENV/

# Django
*.log
local_settings.py
db.sqlite3
media/

# IDE
.vscode/
.idea/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db
EOF

项目结构最佳实践

推荐的项目结构

my_django_project/
├── venv/                   # 虚拟环境
├── requirements/           # 依赖文件
│   ├── base.txt           # 基础依赖
│   ├── development.txt    # 开发依赖
│   └── production.txt     # 生产依赖
├── config/                # 配置文件
│   ├── __init__.py
│   ├── settings/
│   │   ├── __init__.py
│   │   ├── base.py        # 基础设置
│   │   ├── development.py # 开发设置
│   │   └── production.py  # 生产设置
│   ├── urls.py
│   └── wsgi.py
├── apps/                  # 应用目录
│   ├── __init__.py
│   ├── accounts/          # 用户账户应用
│   ├── blog/              # 博客应用
│   └── core/              # 核心应用
├── static/                # 静态文件
├── media/                 # 媒体文件
├── templates/             # 模板文件
├── locale/                # 国际化文件
├── tests/                 # 测试文件
├── docs/                  # 文档
├── scripts/               # 脚本文件
├── .env                   # 环境变量
├── .gitignore
├── manage.py
├── README.md
└── requirements.txt

环境变量配置

1. 安装python-decouple

bash
pip install python-decouple

2. 创建.env文件

bash
# .env
DEBUG=True
SECRET_KEY=your-secret-key-here
DATABASE_URL=sqlite:///db.sqlite3
ALLOWED_HOSTS=localhost,127.0.0.1

# 数据库配置
DB_NAME=mydatabase
DB_USER=myuser
DB_PASSWORD=mypassword
DB_HOST=localhost
DB_PORT=5432

# 邮件配置
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password

3. 在settings.py中使用

python
# settings.py
from decouple import config
import os

# 基础配置
DEBUG = config('DEBUG', default=False, cast=bool)
SECRET_KEY = config('SECRET_KEY')
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='').split(',')

# 数据库配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': config('DB_NAME'),
        'USER': config('DB_USER'),
        'PASSWORD': config('DB_PASSWORD'),
        'HOST': config('DB_HOST', default='localhost'),
        'PORT': config('DB_PORT', default='5432'),
    }
}

# 邮件配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = config('EMAIL_HOST')
EMAIL_PORT = config('EMAIL_PORT', cast=int)
EMAIL_USE_TLS = True
EMAIL_HOST_USER = config('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD')

开发工具配置

Django Debug Toolbar

bash
# 安装
pip install django-debug-toolbar
python
# settings.py
INSTALLED_APPS = [
    # ...
    'debug_toolbar',
]

MIDDLEWARE = [
    # ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
]

# 只在DEBUG模式下显示
INTERNAL_IPS = [
    '127.0.0.1',
]

# 配置面板
DEBUG_TOOLBAR_PANELS = [
    'debug_toolbar.panels.versions.VersionsPanel',
    'debug_toolbar.panels.timer.TimerPanel',
    'debug_toolbar.panels.settings.SettingsPanel',
    'debug_toolbar.panels.headers.HeadersPanel',
    'debug_toolbar.panels.request.RequestPanel',
    'debug_toolbar.panels.sql.SQLPanel',
    'debug_toolbar.panels.staticfiles.StaticFilesPanel',
    'debug_toolbar.panels.templates.TemplatesPanel',
    'debug_toolbar.panels.cache.CachePanel',
    'debug_toolbar.panels.signals.SignalsPanel',
    'debug_toolbar.panels.logging.LoggingPanel',
    'debug_toolbar.panels.redirects.RedirectsPanel',
    'debug_toolbar.panels.profiling.ProfilingPanel',
]
python
# urls.py
from django.conf import settings
from django.conf.urls import include

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns

Django Extensions

bash
# 安装
pip install django-extensions
python
# settings.py
INSTALLED_APPS = [
    # ...
    'django_extensions',
]
bash
# 有用的命令
python manage.py shell_plus          # 增强的shell
python manage.py show_urls           # 显示所有URL
python manage.py validate_templates  # 验证模板
python manage.py runserver_plus      # 增强的开发服务器

代码质量工具

1. Black (代码格式化)

bash
# 安装
pip install black

# 使用
black .
black --line-length 88 .
black --check .  # 检查但不修改
toml
# pyproject.toml
[tool.black]
line-length = 88
target-version = ['py38']
include = '\.pyi?$'
extend-exclude = '''
/(
  # directories
  \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | build
  | dist
)/
'''

2. Flake8 (代码检查)

bash
# 安装
pip install flake8

# 使用
flake8 .
ini
# .flake8
[flake8]
max-line-length = 88
exclude = 
    .git,
    __pycache__,
    venv,
    migrations
ignore = 
    E203,  # whitespace before ':'
    W503,  # line break before binary operator

3. isort (导入排序)

bash
# 安装
pip install isort

# 使用
isort .
isort --check-only .  # 检查但不修改
toml
# pyproject.toml
[tool.isort]
profile = "black"
multi_line_output = 3
line_length = 88

预提交钩子

bash
# 安装pre-commit
pip install pre-commit

# 创建配置文件
cat > .pre-commit-config.yaml << EOF
repos:
  - repo: https://github.com/psf/black
    rev: 23.9.1
    hooks:
      - id: black
        language_version: python3.11

  - repo: https://github.com/pycqa/isort
    rev: 5.12.0
    hooks:
      - id: isort
        args: ["--profile", "black"]

  - repo: https://github.com/pycqa/flake8
    rev: 6.1.0
    hooks:
      - id: flake8

  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml
      - id: check-added-large-files
EOF

# 安装钩子
pre-commit install

验证环境配置

创建测试项目

bash
# 激活虚拟环境
source venv/bin/activate  # Linux/macOS
# 或
venv\Scripts\activate     # Windows

# 创建Django项目
django-admin startproject testproject
cd testproject

# 运行开发服务器
python manage.py runserver

# 访问 http://127.0.0.1:8000/
# 应该看到Django欢迎页面

环境检查清单

python
# check_environment.py
import sys
import django
from django.conf import settings

def check_environment():
    print("=== Django环境检查 ===")
    
    # Python版本
    print(f"Python版本: {sys.version}")
    
    # Django版本
    print(f"Django版本: {django.get_version()}")
    
    # 虚拟环境检查
    if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
        print("✓ 虚拟环境已激活")
    else:
        print("✗ 虚拟环境未激活")
    
    # 已安装的包
    import pkg_resources
    installed_packages = [d.project_name for d in pkg_resources.working_set]
    
    required_packages = ['django', 'pillow']
    for package in required_packages:
        if package.lower() in [p.lower() for p in installed_packages]:
            print(f"✓ {package} 已安装")
        else:
            print(f"✗ {package} 未安装")

if __name__ == "__main__":
    check_environment()

常见问题解决

1. Python命令不识别

bash
# Windows
# 确保Python已添加到PATH环境变量
# 或使用py命令
py --version
py -m pip install django

# macOS/Linux
# 使用python3命令
python3 --version
python3 -m pip install django

2. pip安装失败

bash
# 升级pip
python -m pip install --upgrade pip

# 使用国内镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django

# 配置永久镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

3. 虚拟环境激活失败

bash
# Windows PowerShell执行策略问题
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# 或使用cmd而不是PowerShell

4. Django导入错误

python
# 确保在正确的虚拟环境中
which python  # Linux/macOS
where python  # Windows

# 检查Django是否在Python路径中
python -c "import django; print(django.__file__)"

本章小结

本章详细介绍了Django开发环境的搭建:

关键要点:

  • Python安装:选择合适的Python版本
  • 虚拟环境:为每个项目创建独立环境
  • Django安装:使用pip安装Django
  • 开发工具:选择合适的IDE和扩展
  • 项目结构:遵循最佳实践组织代码

最佳实践:

  • 使用虚拟环境隔离项目依赖
  • 配置环境变量管理敏感信息
  • 使用代码质量工具保证代码规范
  • 设置预提交钩子自动检查代码
  • 创建详细的requirements.txt

开发工具链:

  • VS Code + Python扩展
  • Django Debug Toolbar
  • Black + Flake8 + isort
  • Git版本控制
  • 虚拟环境管理

在下一章中,我们将创建第一个Django项目,学习Django的基本项目结构和配置。

延伸阅读

本站内容仅供学习和研究使用。