新手用 Docker 搭建 Python 开发环境:从零跑通第一个数据分析脚本

举报
yd_252022162 发表于 2026/11/09 15:05:15 2026/11/09
【摘要】 刚开始学 Python 总被环境问题绊住?本文手把手教你用 Docker 打包 Python 开发环境:写 Dockerfile、构建镜像、挂载代码目录,并盘点四个新手常见坑,跟着做,半小时跑通第一个容器化 Python 程序。

刚开始学 Python 的朋友,几乎都会遇到同一个问题:明明照着教程敲代码,别人能跑,自己的电脑却报错。十有八九不是代码的问题,而是环境的问题。这篇文章就带你用 Docker 把 Python 开发环境“装进盒子”,一次配置,到处运行。

为什么新手要用 Docker

Python 的环境问题主要来自三个地方:版本、依赖和系统差异。

同一台电脑可能装着 Python 3.9、3.11、3.12,pip 装包时稍不留神就装错了地方;项目 A 要 numpy 1.26,项目 B 要 numpy 2.0,两个版本互相打架;教程在 Linux 下录制,你的 Windows 却没有编译工具。

Docker 的思路很简单:把 Python 解释器、依赖库和代码一起打包进镜像,运行起来就是一个隔离的容器。环境坏了,删掉容器重建一个,不到一分钟;换了电脑,把镜像带过去,行为一模一样。

第一步:安装并验证 Docker

去 Docker 官网下载 Docker Desktop,安装完成后在终端验证:

docker --version
docker run hello-world

看到 “Hello from Docker!” 就说明安装成功。这个 hello-world 镜像很小,专门用来测试 Docker 能不能正常拉取镜像并启动容器。

第二步:写你的第一个 Dockerfile

在项目文件夹新建 Dockerfile:

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "main.py"]

每行只做一件事:FROM 指定基础镜像,python:3.12-slim 轻量够用;WORKDIR 设定容器内工作目录;先单独复制 requirements.txt 再安装依赖,改代码时就不用重装依赖,构建会快很多;最后 CMD 是容器启动时默认执行的命令。

requirements.txt 里先只写一行:

pandas

main.py 也保持简单:

import pandas as pd

data = {"城市": ["北京", "上海", "深圳"], "销量": [120, 150, 180]}
df = pd.DataFrame(data)
print(df)
print("平均销量:", df["销量"].mean())

第三步:构建镜像并运行

在项目目录下执行:

docker build -t my-first-python .
docker run --rm my-first-python

build 按 Dockerfile 一步步生成镜像,-t 是给镜像起名字;run 启动容器执行 main.py,--rm 让容器退出后自动删除,保持环境干净。看到表格和平均销量打印出来,第一个容器化 Python 程序就跑通了。

开发时怎么保持高效

每次改代码都重新构建镜像太慢了。正确做法是把本地代码目录挂载进容器:

docker run --rm -v ${PWD}:/app -w /app python:3.12-slim python main.py

-v 把当前目录挂到容器里的 /app,本地改代码,容器内立即生效;-w 指定工作目录。这样既享受隔离环境,又保留了本地编辑的流畅体验。

新手最容易踩的四个坑

**1. 安装依赖太慢。**国内访问 PyPI 经常超时,pip install 时加上国内镜像源,例如 -i https://pypi.tuna.tsinghua.edu.cn/simple。

**2. 镜像越做越大。**选用 slim 这类小基础镜像,装包时给 pip 加上 --no-cache-dir,不要把缓存打进镜像。

**3. 容器一启动就退出。**容器没有持续运行的任务时会自动退出,这不是 bug。需要交互调试时,用 docker run -it 进入容器内部排查。

**4. 报错信息看不懂。**把完整报错复制给 AI 编程助手,让它帮你定位原因,再对照 Dockerfile 逐行检查。AI 适合解释报错、修补配置,但关键命令一定要自己理解后再执行,不要盲目复制。

今天就能动手的小练习

跑通上面的例子后,再做三件事:把 main.py 换成你自己的脚本,比如读取一个 CSV 文件做简单统计;用 docker images 看看本地有哪些镜像,给镜像换个名字和版本号;用 docker ps -a 查看历史容器,删掉不再需要的容器和镜像。

环境问题一旦被 Docker“收进盒子”,学 Python 的注意力就能回到编程本身。先把这套最小流程跑通,再去学 Docker Compose、多阶段构建这些进阶用法,会顺畅得多。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。