让uv管理Python的一切
Mr.Lee 2025-12-13 21:41:00 Python
Python 项目管理工具 & 环境管理工具
# 用uv 管理项目
# 创建一个新的项目
❯ uv init open-auto-phone
Initialized project `open-auto-phone` at `~/temp/open-auto-phone`
# 查看初始化的成果
❯ cd open-auto-phone/
❯ ll -a
total 32
drwxr-xr-x 8 striveonger staff 256B 12 13 18:50 .
drwxr-xr-x 25 striveonger staff 800B 12 13 18:50 ..
drwxr-xr-x 9 striveonger staff 288B 12 13 18:51 .git
-rw-r--r-- 1 striveonger staff 109B 12 13 18:50 .gitignore
-rw-r--r-- 1 striveonger staff 5B 12 13 18:50 .python-version
-rw-r--r-- 1 striveonger staff 0B 12 13 18:50 README.md
-rw-r--r-- 1 striveonger staff 93B 12 13 18:50 main.py
-rw-r--r-- 1 striveonger staff 161B 12 13 18:50 pyproject.toml
# 添加依赖
❯ uv add requests
Resolved 6 packages in 0.70ms
Audited 5 packages in 0.01ms
# 测试依赖是否生效
❯ uv run main.py
requests version: 2.32.5
# 删除虚拟环境
❯ rm -rf .venv/
# 同步pyproject.toml中的环境
❯ uv sync
Using CPython 3.11.12
Creating virtual environment at: .venv
Resolved 6 packages in 8ms
Installed 5 packages in 7ms
+ certifi==2025.11.12
+ charset-normalizer==3.4.4
+ idna==3.11
+ requests==2.32.5
+ urllib3==2.6.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# main.py
import requests
def main():
version = requests.__version__
print( f"requests version: {version}")
if __name__ == "__main__":
main()
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 用uv 管理环境
# 创建虚拟环境
❯ uv venv --python 3.11
Using CPython 3.11.12
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
# 查看可用的版本
❯ uv python list
cpython-3.14.0a6-macos-aarch64-none <download available>
cpython-3.14.0a6+freethreaded-macos-aarch64-none <download available>
cpython-3.13.5-macos-aarch64-none /opt/homebrew/bin/python3.13 -> ../Cellar/python@3.13/3.13.5/bin/python3.13
cpython-3.13.5-macos-aarch64-none /opt/homebrew/bin/python3 -> ../Cellar/python@3.13/3.13.5/bin/python3
cpython-3.13.3-macos-aarch64-none <download available>
cpython-3.13.3+freethreaded-macos-aarch64-none <download available>
cpython-3.12.11-macos-aarch64-none /opt/homebrew/bin/python3.12 -> ../Cellar/python@3.12/3.12.11/bin/python3.12
cpython-3.12.10-macos-aarch64-none <download available>
cpython-3.11.12-macos-aarch64-none /Users/striveonger/.local/share/uv/python/cpython-3.11.12-macos-aarch64-none/bin/python3.11
cpython-3.10.17-macos-aarch64-none <download available>
cpython-3.9.22-macos-aarch64-none <download available>
cpython-3.9.6-macos-aarch64-none /usr/bin/python3
cpython-3.8.20-macos-aarch64-none <download available>
pypy-3.11.11-macos-aarch64-none <download available>
pypy-3.10.16-macos-aarch64-none <download available>
pypy-3.9.19-macos-aarch64-none <download available>
pypy-3.8.16-macos-aarch64-none <download available>
graalpy-3.11.0-macos-aarch64-none <download available>
graalpy-3.10.0-macos-aarch64-none <download available>
graalpy-3.8.5-macos-aarch64-none <download available>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 用uv 管理命令行工具
# 安装全局的命令行工具
❯ uv tool install pytest
Resolved 5 packages in 747ms
Prepared 2 packages in 6.78s
Installed 5 packages in 56ms
+ iniconfig==2.3.0
+ packaging==25.0
+ pluggy==1.6.0
+ pygments==2.19.2
+ pytest==9.0.2
Installed 2 executables: py.test, pytest
# 查看uv安装的全局命令行工具
❯ uv tool list
pytest v9.0.2
- py.test
- pytest
# 卸载全局命令行工具
❯ uv tool uninstall pytest
Uninstalled 2 executables: py.test, pytest
# 临时运行一个命令
❯ uvx pytest
# 创建临时的虚拟环境
❯ uv init --script main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27