V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
iorilu
V2EX  ›  Python

Python 官方发布版本管理工具 pymanager - 类似 pyenv, uv

  •  
  •   iorilu · 15 天前 · 5018 次点击

    https://github.com/python/pymanager

    好像是刚发布的, 没看到有人讨论, 我也是昨天看到的

    目前只支持 windows , 但官方产品应该以后会支持 linux, mac 把

    官方总算认识到 python 的版本管理是个问题了

    45 条回复    2025-07-22 11:23:23 +08:00
    SGL
        1
    SGL  
       15 天前
    好多版本管理工具,我还是之前的 conda 思维
    phoulx
        2
    phoulx  
       15 天前
    主要是解决 Windows 安装 Python 复杂的问题,根据相关的 PEP-773 ,应该仅限于 Windows 平台
    zhangkai1024
        3
    zhangkai1024  
       15 天前
    那个工具比较主流啊?
    xgq89757
        4
    xgq89757  
       15 天前
    @zhangkai1024 miniconda 或者 miniforge 吧,uv 对二进制包不太方便。
    lihuashan
        5
    lihuashan  
       15 天前
    1. Windows 安装复杂,才真正“需要”管理器
    Windows 上没有内置 Python ,需要额外下载安装,还得手动配置 PATH ,非常不方便。

    Linux 和 macOS 默认都带有 Python ,且通常使用包管理器(如 apt, yum, brew )一条命令即可搞定安装。

    所以官方优先解决 Windows 安装难 的问题,是合理的。

    2. Linux/macOS 用户早已有优秀方案
    Linux/macOS 用户更倾向使用如:

    pyenv:多版本管理神器

    virtualenv, venv:环境隔离

    包管理器安装如 apt install python3.11 ,brew install python

    所以新做一个管理器对他们意义不大,等于“重复造轮子”。
    mengdodo
        6
    mengdodo  
       15 天前
    习惯了 conda,找最小的 miniconda 安装
    kid1412621
        7
    kid1412621  
       15 天前
    为啥 python 的版本管理,依赖管理,linter ,formatter 工具的种类,比 js 还多、杂……
    jsq2627
        8
    jsq2627  
       15 天前
    @kid1412621 同感。从别的语言转过来偶尔写 python ,觉得 python 工程化实践怎么这么不成熟
    locoz
        9
    locoz  
       15 天前 via Android
    无所谓了,像我现在版本管理都是用 UV 的,无论用的啥操作系统,都是一行命令就能安装指定版本了
    craftsmanship
        10
    craftsmanship  
       15 天前 via Android
    UV 好用 楼上吐槽得对 Python 都这么久了 在工程化方面居然还这么不完善…
    Mark24
        11
    Mark24  
       15 天前   ❤️ 3
    很好,我们拥有了 N+1 个包管理
    alexsz
        12
    alexsz  
       15 天前
    在服务器和本地 wsl 中一直用 pyenv ,最近好像 pyenv 也支持 windows 了
    yuchen198
        13
    yuchen198  
       15 天前
    Windows 我都是用 venv ,Linux 服务器用 pyenv
    NoOneNoBody
        14
    NoOneNoBody  
       15 天前
    google 的 mediapipe 非常好用,但它 requirements 写着 numpy==1.26.4
    当项目内大部分都用到 numpy 2.x 时,只能放弃它,或者另造一个环境

    这个就是痛点
    zh584728
        15
    zh584728  
       15 天前
    我用 micromamba
    clemente
        16
    clemente  
       15 天前
    @craftsmanship UV 支持 win 吗
    clemente
        17
    clemente  
       15 天前
    @mengdodo conda 有个最大的缺陷是 不同的 os 版本或者发行版 bash 经常莫名不生效 以及 conda 商用或者公司内用需要付费
    cccxu
        18
    cccxu  
       15 天前
    @clemente 支持, 还挺好用的
    iorilu
        19
    iorilu  
    OP
       15 天前
    @clemente uv 全平台的

    目前我认为最好的就是 uv 了

    当然了, 追求稳定大厂支持可以 miniconda
    jonty
        20
    jonty  
       15 天前
    @clemente #16 支持
    hmxxmh
        21
    hmxxmh  
       15 天前
    windows 开发用 conda, python 有个问题就是在本地开发完了,想要快速去到 linux 部署比较麻烦,conda 虽然有打包依赖的功能,但是实际没咋用过,还是像 go 那种舒服,跨平台
    duzhuo
        22
    duzhuo  
       15 天前
    @hmxxmh 如果直接在服务器开发怎么样 Linux x86 就不存在跨平台
    moioooo
        23
    moioooo  
       15 天前
    apt
    source .venv/bin/activate
    python XXXX

    这么多年不就这么用的么
    hmxxmh
        24
    hmxxmh  
       14 天前
    @duzhuo 可以的,vscode 有插件支持,看个人习惯
    akaHenry
        25
    akaHenry  
       14 天前   ❤️ 1
    1. 非 conda 生态, 一律首选 uv(rye 已废弃, 合并到 uv).

    2. conda 生态, 推荐 pixi. (混编, 支持安装 py, cpp, rust 等多语言包, 实现统一管理)

    https://pixi.sh/latest/

    3. 顺便 Mojo(Python++) 也是使用 pixi 来做包管理工具.

    uv 和 pixi 都是基于 rust 开发的, 设计理念很接近, 都借鉴了 cargo 的设计理念, 很现代.

    其他过去常用的 pyenv, pip, poetry, pdm 等等, 都不建议, 也不需要使用了. (uv 完备, 其他大都是残疾人.)
    Isuxiz
        26
    Isuxiz  
       14 天前
    看了眼 PEP 773 ,是用来规范化 python 在 windows 下安装过程的,根本不打算支持其他 OS
    akaHenry
        27
    akaHenry  
       14 天前
    uv 目前在国内云主机使用上, 唯一的不方便是使用 uv 安装 python.

    (其他基本都完美, 支持 workspace 模式, 非常爽)

    比如 uv install python3.12, 会走官方源, 被墙(梯子问题). mirror 通常只是镜像了 pypi 的包, 而不包含 python 本体.

    (当然, uv 支持使用 os 安装的 python 版本来创建 venv 环境, 也能绕过, 虽然不够方便. so, 你可以使用 apt 安装 python)

    在云主机上, 裸构建 docker image + python 时, 略不变.

    (同样, 可以在网络通的环境, 打包好. 再 mirror 过去, 拉成品 docker image, 也可绕过.)

    总体就这些小不便, 其他体验都很完美.

    另外, vscode 对 uv + venv 支持非常完美, 甚至好过 pycharm.

    (pycharm 对 monorepo 的多 venv 管理 + 切换体验, 简直狗屎)

    作为 pycharm 骨灰级用户, 弃用 pycharm, 改用 vscode.

    2 个核心原因: GPT 体验 + UV 体验, vscode 都要吊打 pycharm.
    skiy
        28
    skiy  
       14 天前 via iPhone
    怎么会有人觉得 uv 安装二进制安不方便呢? ut tool 就行了。你说安安装 python 安装包不方便倒是真,因为它用 github release 上的。
    其实 rye 作为项目管理挺好的,可惜被弃了。
    wryyyyyyyyyyyy
        29
    wryyyyyyyyyyyy  
       14 天前   ❤️ 3
    @akaHenry 我上周刚遇到这个问题,uv 安装 python 下载是通过
    https://github.com/astral-sh/python-build-standalone/releases
    但服务器通常没有梯子,安装起来也麻烦。
    但不知道哪个版本 uv 新增了 --mirror 参数,
    --mirror <MIRROR> Set the URL to use as the source for downloading Python installations [env:UV_PYTHON_INSTALL_MIRROR=]
    但 uv python install --mirror 不好使,使用 env: UV_PYTHON_INSTALL_MIRROR= 这个参数设置是可以的。
    然后南京大学对 python-build-standalone/releases 镜像了,但我这不好使,找到了另一个镜像
    https://python-standalone.org/#/?id=mirror-site-for-python-build-standalone-releases 打开后有用法。
    akaHenry
        30
    akaHenry  
       14 天前
    @wryyyyyyyyyyyy #29

    你这个发现, 确实棒!

    --mirror 和 nju 的源, 我也确实测试过. 不好使. 没想到 设置环境变量是好的. 可以.

    我用国内主机使用 apt 安装 python + docker 构建好含对应 python 的基镜像 + mirror pull 方式, 绕过的.

    这个 https://python-standalone.org/#/ 是谁部署的? 不太敢用?

    docker 基镜像, 使用 github 托管, nju 对 github docker 做了镜像. 挺好用.
    wryyyyyyyyyyyy
        31
    wryyyyyyyyyyyy  
       14 天前
    @akaHenry

    我也不知道是谁部署的,
    https://github.com/tuna/issues/issues/2125 里面发现的。

    老哥你能具体讲一下你这种方法吗? 没看懂。
    hzzhzzdogee
        32
    hzzhzzdogee  
       14 天前
    uv 还没一统江湖吗
    akaHenry
        33
    akaHenry  
       14 天前
    @wryyyyyyyyyyyy #31


    你是指 docker 构建+部署吗? 具体参考如下内容.

    这是我的基镜像 dockerfile, 包括 ubuntu22 和 debian12 的配置:

    https://github.com/better-sre/config/tree/main/dockerfile

    根据这个配置, 可以本地编译+发布, 也可以利用 github action, 我懒得写配置. 直接本地发布的.

    这是我打包+发布到 github 的 docker 基镜像路径:

    https://github.com/orgs/better-sre/packages


    南京大学对 github docker 源 ghcr.io 的镜像:

    https://sci.nju.edu.cn/9e/05/c30384a564741/page.htm

    基于 南大的 mirror, 就可以在国内云主机, 快速拉到基镜像, 再在云主机上 docker build 就快了.
    akaHenry
        34
    akaHenry  
       14 天前
    @wryyyyyyyyyyyy #31

    补充一下, 完整的 docker 构建 + 发布到 github (ghcr.io) 的脚本在这里:

    https://github.com/better-sre/config/blob/main/dockerfile/_debian/Taskfile.yml#L34

    这个是 debian 的发布脚本, ubuntu 的, 在对应目录下, 也都有.

    每个目录的 readme.md 下, 有 Taskfile.yml 构建脚本的使用说明. 应该能看得懂.

    注意需要配置 github token, 然后设置到 env 环境变量里.

    具体我这个 repo 根目录, 有 .env.local 的参数格式. 可以看一下.

    应该就这些了.
    littlefishzzz
        35
    littlefishzzz  
       14 天前   ❤️ 1
    @akaHenry #27 uv python install 之前给 Github 文件下载挂上代理即可,最简单直接的方式:指定下载源,在原路径前面加上任意一个 Github 的代理,例如 UV_PYTHON_INSTALL_MIRROR=https://gh-proxy.com/https://github.com/astral-sh/python-build-standalone/releases/download
    jqtmviyu
        36
    jqtmviyu  
       14 天前
    我希望官方承认 uv 做得比较好, 而不是又造重复的轮子.
    AsuorZ
        37
    AsuorZ  
       14 天前
    pyenv 在 Windows 就是一坨屎,自己重写了一个 pyvm 基本能用
    iorilu
        38
    iorilu  
    OP
       14 天前
    @jqtmviyu 这个也没冲突

    官方那个主要是用来安装 python 的, 尤其是多个版本

    不是偏重于项目管理, 虚拟环境管理

    功能只有 uv 的一点点而已

    真正主要做 python 开发都应该用 uv, 把他标准化最好,现在开源项目还是各种各的, 很不方便
    Linioi
        39
    Linioi  
       14 天前
    @akaHenry #25 因为 Conda 实在太慢了,最近正在尝试切换 pixi ,但是感觉 pixi 各个 IDE 的支持都很一般,尤其是 PyCharm 。
    Geon97
        40
    Geon97  
       14 天前
    需要安装 C/C++ 编译器的 Visual Studio
    我还是继续 conda 和 uv 吧
    官网直接 uv 收编吧,别再重复造轮子了,没意义
    tangc1986
        41
    tangc1986  
       14 天前   ❤️ 1
    @wryyyyyyyyyyyy

    也可以在项目的 pyproject.toml 里加上

    [tool.uv]

    python-install-mirror = "https://gh-proxy.com/github.com/indygreg/python-build-standalone/releases/download"

    新环境里使用 uv sync 的时候,就会自动从上面指定的地址里下载 python 了。
    hyperbin
        42
    hyperbin  
       14 天前 via Android
    p 工程的管理工具就不应该用 py 来写,依赖管理者自身还带着一堆依赖不太优雅,uv 就不错
    akaHenry
        43
    akaHenry  
       13 天前
    @tangc1986 #41 这个不错, 抽空试试. 感谢.
    akaHenry
        44
    akaHenry  
       13 天前
    @Linioi #39 用 vscode 就好. vscode 插件市场, 搜索 python, 把 微软官方的插件, 都装全. 开发体验, 不比 pycharm 差.

    (代码补全, 跳转, 流畅程度, GPT 友好, 体验都是完备的)

    2025 了, python 开发, 可以完全弃用 pycharm 了.

    (作为精通 pycharm 各种技巧, 10 多年骨灰用户的真实评价)

    pycharm 卡, 慢, 对 monorepo 中, 多 venv 切换支持烂. (远远不如 vscode) GPT 插件支持, 远远落后.

    JB 几个语言的 IDE, 都已经开始免费了, 你就知道, 用户流失率有多高.
    qwertWZ
        45
    qwertWZ  
       7 天前
    PEP 773 – A Python Installation Manager for Windows

    我看这个 pymanager 就是用来改进 Windows 平台上的 py.exe 的,安装完之后在 Windows 下的启动命令也是 py.exe ,应该没有上 Linux 和 macOS 的打算。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5235 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:10 · PVG 16:10 · LAX 01:10 · JFK 04:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.