从 JDK + Maven 到 Python 工具链
Python 不需要编译,真正的坑在环境管理。用 uv 把版本、依赖、虚拟环境一次管齐。
12 分钟 · 右栏代码可点击「运行」
Java 的世界是「先编译再运行」,Python 的世界是「解释器直接跑源码」。所以你不会怀念 javac,但会立刻遇到 Java 没有的问题:机器上同时存在多个 Python 版本,而包默认装进全局环境。工具链的第一课不是语法,是隔离。
| 任务 | Java 世界 | Python 世界 |
|---|---|---|
| 版本管理 | apt / brew 装 JDK | uv python install 3.12 |
| 项目描述 | pom.xml / build.gradle | pyproject.toml |
| 装依赖 | mvn install | uv add requests |
| 运行程序 | mvn exec / java -jar | python main.py |
| 一次性执行 | jshell | uv run / python -c |
| 测试 | JUnit | pytest |
2024 年之后的事实标准是 uv(Rust 编写,npm 级速度),一个工具同时承担了 nvm(管 Python 版本)+ Maven(管依赖)的角色。官方内置方案 python -m venv + pip 仍然可用,但慢且不锁依赖,团队项目建议直接 uv。
标准工作流对比
Java
1# Java:JDK 是全局的,Maven 管依赖2brew install openjdk@173mvn archetype:generate -DgroupId=com.demo4mvn package # 编译 + 打包5java -jar target/app.jar
Python
1# Python:先隔离环境,再装依赖,再运行2curl -LsSf https://astral.sh/uv/install.sh | sh3uv init demo && cd demo4uv add requests # 自动创建 .venv 并写入 pyproject.toml5uv run python main.py
- Java 里没有的问题:
.venv目录就是 Python 版的node_modules,每个项目独立。 - IDE(PyCharm / VS Code)选中解释器时,选项目里的
.venv/bin/python,不要选系统 Python。
TIP
铁律 — 永远不要往系统 Python 里装包。macOS / Linux 的系统 Python 被操作系统依赖,弄坏很麻烦。先建 venv,一切包只进 venv。
练一练
这张卡的示例代码已在游乐场中备好,改一改再运行。