用 Python 虚拟环境加 Docker,给 AI 小项目搭一个干净可复现的开发环境
做 AI 小项目时,最让人头疼的往往不是模型本身,而是环境:上周还能跑的代码,换台电脑就报错;两个项目要同一个库的不同版本,互相打架。办法是先把环境隔离开,再把隔离后的环境写下来,让它在任何地方都能一键复现。
一、用 venv 给每个项目一个独立房间
Python 自带的 venv 不用额外安装。进入项目目录,先执行 python -m venv .venv 创建环境,再激活它:Windows 用 .venv\Scripts\activate,Linux 或 macOS 用 source .venv/bin/activate。命令行前面出现 (.venv) 就表示成功了,这时用 pip 装的包只进这个项目,不会污染系统 Python。
依赖装好后立刻执行 pip freeze > requirements.txt,把版本号锁死。新电脑上只要建好虚拟环境,再执行 pip install -r requirements.txt,就能得到同一套依赖。记得把 .venv 写进 .gitignore,不要提交到代码仓库。
二、用 Docker 把环境打包带走
venv 解决了一台电脑上的隔离,换电脑、换系统还可能出问题,Docker 就是下一步。它把代码、依赖和运行环境打进一个镜像,在哪里运行都一样。
给小项目写 Dockerfile,可以从 python:3.12-slim 这样的官方镜像开始:设置工作目录,复制 requirements.txt 进去安装依赖,再复制代码,最后写好启动命令,例如 CMD ["python", "app.py"]。构建用 docker build -t ai-demo:1.0 .,运行用 docker run --rm -p 8000:8000 ai-demo:1.0,本机打开 http://localhost:8000 就能看到服务。调试时用 -v 把本地代码目录挂载进容器,改代码不用重新构建。
三、两者怎么配合
本地写代码、快速试错时用 venv,启动快、改起来方便;要交付、演示或部署时用 Docker,环境完整、可复现。我的做法是:先在 venv 里把依赖跑通,确认 requirements.txt 没有多余的包,再写 Dockerfile,两边用同一份依赖清单。
再加两个细节:写一个 .dockerignore,把 .venv、__pycache__ 和数据集排除在构建之外,既加快构建,也避免把不该进镜像的东西打进去;基础镜像要带具体版本号,不要用 latest,否则下次构建可能悄悄换了版本。
四、让 AI 工具帮忙,但别让它替你决定
写 Dockerfile、排查依赖冲突这类重复劳动,可以交给 AI 编程助手:让它根据 requirements.txt 生成草稿,解释 pip 报错的原因。但要守住三条线:每一行命令都要自己看懂再执行;不要把真实的 API Key 或密码贴进聊天框,也不要写进 Dockerfile 和代码,密钥用环境变量传;生成好的配置要在干净环境里实际跑一次,能跑通才算数。
五、新手最容易踩的坑
一是把系统 Python 当项目环境用,装着装着就分不清包属于谁;二是不锁版本号,隔一个月重装就变了样;三是镜像里塞了数据集和缓存,越建越大;四是图省事把密钥写进镜像,镜像一分享就等于交出了钥匙。
新建项目时按这个顺序走一遍:建 venv、锁依赖、写 Dockerfile、加 .dockerignore、密钥走环境变量,最后在干净环境里重建并运行一次。环境上省下来的时间,才是真正留给模型和产品的时间。
- 点赞
- 收藏
- 关注作者
评论(0)