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

16 天前
 iorilu

https://github.com/python/pymanager

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

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

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

5060 次点击
所在节点    Python
45 条回复
hmxxmh
16 天前
windows 开发用 conda, python 有个问题就是在本地开发完了,想要快速去到 linux 部署比较麻烦,conda 虽然有打包依赖的功能,但是实际没咋用过,还是像 go 那种舒服,跨平台
duzhuo
16 天前
@hmxxmh 如果直接在服务器开发怎么样 Linux x86 就不存在跨平台
moioooo
16 天前
apt
source .venv/bin/activate
python XXXX

这么多年不就这么用的么
hmxxmh
16 天前
@duzhuo 可以的,vscode 有插件支持,看个人习惯
akaHenry
16 天前
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
16 天前
看了眼 PEP 773 ,是用来规范化 python 在 windows 下安装过程的,根本不打算支持其他 OS
akaHenry
16 天前
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
16 天前
怎么会有人觉得 uv 安装二进制安不方便呢? ut tool 就行了。你说安安装 python 安装包不方便倒是真,因为它用 github release 上的。
其实 rye 作为项目管理挺好的,可惜被弃了。
wryyyyyyyyyyyy
16 天前
@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
16 天前
@wryyyyyyyyyyyy #29

你这个发现, 确实棒!

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

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

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

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

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

老哥你能具体讲一下你这种方法吗? 没看懂。
hzzhzzdogee
15 天前
uv 还没一统江湖吗
akaHenry
15 天前
@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
15 天前
@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
15 天前
@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
15 天前
我希望官方承认 uv 做得比较好, 而不是又造重复的轮子.
AsuorZ
15 天前
pyenv 在 Windows 就是一坨屎,自己重写了一个 pyvm 基本能用
iorilu
15 天前
@jqtmviyu 这个也没冲突

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

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

功能只有 uv 的一点点而已

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1145021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX