2. 开发环境搭建:Python虚拟环境配置、Flask框架安装、项目目录结构设计、依赖管理
好,咱们正式开始动手了。搭建开发环境这件事,说大不大,说小不小。我见过太多新手一上来就 pip install flask,结果项目做到一半,依赖全乱套了。嗯,咱们得从一开始就打好基础。
2.1 Python虚拟环境:为什么必须用?
说白了,虚拟环境就是给你的每个项目一个独立的“小房间”。你在里面装什么库,都不会影响到系统全局或者其他项目。
我个人习惯用 venv,它是 Python 3.3+ 自带的,不需要额外安装。为什么不用 virtualenv 或 conda?其实都行,但 venv 最轻量,也最干净。
核心原则:每个法律文书项目,都应该有自己的虚拟环境。别偷懒,一个环境用到老,迟早要出事。
创建虚拟环境
# 在项目根目录下执行
python -m venv venv
这行命令会在当前目录生成一个 venv 文件夹。里面放着独立的 Python 解释器和 pip。
激活虚拟环境
Windows 和 Mac/Linux 的命令不一样,别搞混了。
# Windows (cmd/PowerShell)
venv\Scripts\activate
# Mac / Linux
source venv/bin/activate
激活后,你会看到终端前面多了个 (venv) 标记。这时候你装的所有库,都只在这个环境里生效。
小技巧:我习惯在 VS Code 里直接选择 Python 解释器为 ./venv/bin/python,这样终端和编辑器用的都是同一个环境,不会出现「明明装了包,但导入报错」的尴尬。
2.2 Flask框架安装
Flask 是个轻量级的 Web 框架,特别适合做法律文书自动生成这种内部工具。它不像 Django 那么重,你想想看,我们只需要几个 API 接口和简单的页面,Flask 刚刚好。
# 确保虚拟环境已激活
pip install flask
装完之后,你可以验证一下:
python -c "import flask; print(flask.__version__)"
如果输出版本号,比如 2.3.2,那就说明装好了。
注意:我曾经遇到过一个问题——在虚拟环境外装了 Flask,然后在虚拟环境里运行项目,结果报 ModuleNotFoundError。排查了半天,才发现是环境搞混了。所以,每次开新终端,第一件事就是激活虚拟环境。
2.3 项目目录结构设计
好的目录结构,能让你的项目活得更久。我见过一些项目,所有代码都堆在一个 app.py 里,改起来简直要命。
下面是我个人比较推荐的结构,适合法律文书自动生成系统:
legal_doc_generator/
├── app/ # 核心应用代码
│ ├── __init__.py # Flask 应用工厂
│ ├── routes/ # 路由(API接口)
│ │ ├── __init__.py
│ │ └── document.py # 文书生成相关接口
│ ├── models/ # 数据模型
│ │ ├── __init__.py
│ │ └── contract.py # 合同模板模型
│ ├── templates/ # HTML 模板
│ │ └── index.html
│ └── static/ # 静态文件(CSS/JS)
│ └── style.css
├── venv/ # 虚拟环境(不提交到Git)
├── requirements.txt # 依赖清单
├── config.py # 配置文件
└── run.py # 启动入口
为什么要这么分?我给你拆开讲讲:
- app/:所有业务代码都放这里,方便管理和扩展
- routes/:专门放 API 路由,每个文件对应一类功能
- models/:数据模型,比如合同模板、当事人信息等
- templates/:HTML 模板,Flask 默认会从这里找
- static/:CSS、JavaScript、图片等静态资源
- config.py:数据库连接、密钥等配置信息
- run.py:就几行代码,用来启动应用
避坑指南:我曾经把配置文件直接写在 app.py 里,后来要部署到不同环境(开发、测试、生产),每次都要手动改代码。后来改成 config.py 加环境变量,省心多了。
2.4 依赖管理:requirements.txt
这个文件就是你的项目「购物清单」。别人拿到你的项目,只要执行 pip install -r requirements.txt,就能装好所有依赖。
生成 requirements.txt
# 在虚拟环境激活状态下
pip freeze > requirements.txt
打开看看,内容大概长这样:
Flask==2.3.2
Jinja2==3.1.2
Werkzeug==2.3.3
...
每个库后面都跟着版本号。为什么要锁版本?因为不同版本的库可能有兼容性问题。你想想看,如果别人装的是 Flask 1.0,而你用的是 2.0,有些 API 可能就变了。
我的习惯:每次安装新库后,都重新生成一次 requirements.txt。这样能保证清单是最新的。另外,venv/ 文件夹不要提交到 Git,但 requirements.txt 一定要提交。
2.5 知识体系总览
下面这张图,帮你把本章的核心逻辑串起来:
2.6 快速验证:你的环境搭好了吗?
最后,咱们写个最简单的 Flask 应用,验证一下整个环境是否通畅。
在项目根目录创建 run.py:
from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
再创建 app/__init__.py:
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def hello():
return '法律文书自动生成系统 - 环境搭建成功!'
return app
然后运行:
python run.py
打开浏览器,访问 http://127.0.0.1:5000。如果看到「环境搭建成功」的提示,恭喜你,基础环境已经就绪了。
常见问题:如果报错 ModuleNotFoundError: No module named 'flask',99% 的原因是虚拟环境没激活。检查终端前面有没有 (venv) 标记。没有的话,重新激活一下。
公众号:蓝海资料掘金营,微信deep3321