uv init my-project是最简初始化命令,自动创建目录、.python-version、pyproject.toml和main.py/hello.py;支持uv init(当前空目录)、--python 3.12(锁版本并静默下载)、--lib(库结构)、--app(CLI配置)。

直接用 uv init 就行,不用先建目录、不用手动配虚拟环境、不用写 pyproject.toml —— 3 秒内生成可运行的现代 Python 项目。
初始化命令怎么写(含路径和版本控制)
最简形式就是:uv init my-project。它会自动创建目录、写入 .python-version、生成 pyproject.toml 和示例文件(如 main.py 或 hello.py)。
常见组合用法:
- 在当前空目录初始化:
uv init(不带参数,适用于已mkdir && cd好的场景) - 指定 Python 版本:
uv init my-app --python 3.12(自动写入.python-version,若未安装则后续首次uv run时静默下载) - 初始化为库结构(
src/目录):uv init my-lib --lib(适合发布到 PyPI) - 初始化为 CLI 应用:
uv init my-tool --app(自动配置[project.scripts])
初始化后立刻能做什么(别急着激活环境)
uv init 生成的项目不是“半成品”,而是开箱即用的闭环环境。你不需要 source .venv/bin/activate 或等它慢慢建环境。
立即学习“Python免费学习笔记(深入)”;
直接运行:
-
uv run python main.py:自动创建.venv、安装依赖(如果pyproject.toml里有)、执行脚本 -
uv run pytest:如果加过--dev依赖,它会自动识别并运行 -
uv install --dev:显式安装所有生产 + 开发依赖(生成uv.lock)
注意:uv run 是懒加载机制——只有第一次调用时才真正构建环境,之后复用,所以首次略慢但后续极快。
容易被忽略的两个关键文件
初始化后务必留意这两个文件的作用,它们决定了项目行为是否可复现:
-
.python-version:不是 uv 自己的配置,而是被pyenv、direnv等工具广泛识别的标准文件。它锁定解释器版本,但uv会优先按它拉取对应 Python(哪怕系统没装) -
uv.lock:默认不会立即生成,要靠uv lock或uv install触发。没有它,团队成员或 CI 上跑uv install可能装出不同版本依赖——这点和poetry.lock或Pipfile.lock完全一致,但很多人初始化完就忘了这步
为什么不用 uv venv 单独建环境
因为 uv init 已经把环境管理逻辑下沉了。单独执行 uv venv 是给老项目或特殊场景用的(比如你要多个环境共存),而新项目直接走 uv init → uv run 流程更干净。
如果你手动跑了 uv venv,反而可能和 uv init 默认生成的 .venv 冲突;更麻烦的是,uv run 默认只认 .venv,不自动发现你自定义的路径。
结论:新项目别绕弯,uv init 就是起点,也是终点。复杂点在于版本对齐和锁文件落地,而不是初始化本身。


















