Striveonger

vuePress-theme-reco Mr.Lee    2015 - 2025
Striveonger Striveonger
主页
分类
  • 笔记
  • 文章
  • 工具
标签
时间轴
简历
author-avatar

Mr.Lee

269

Article

137

Tag

主页
分类
  • 笔记
  • 文章
  • 工具
标签
时间轴
简历

让uv管理Python的一切

vuePress-theme-reco Mr.Lee    2015 - 2025

让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

# 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

# 用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

# 用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