Python 封装现在很棒:“uv”就是您所需要的

python 封装现在很棒:“uv”就是您所需要的

这篇文章的标题是对 glyph 的 python packaging is good now 的引用。我认为可以肯定地说,在这8年里,我们已经从“好”变成了“伟大”。继续阅读我的推理。

是什么让 python 打包对于初学者来说变得困难

我认为python打包的两个主要困难是

引导,即如何开始!激活,即 python 中的 venvs 如何工作(参见我的 mastodon 线程,它很难解释!)自举是一个经常被忽视的问题。我们应该告诉人们从 https://python.org 安装 python 吗? anaconda 分布?我们如何阻止人们使用他们的系统包管理器并冒破坏一切的风险?

并且不要忘记整个虚拟环境生命周期。作为一个长期的 python 用户,我对它变得麻木了,这太疯狂了,但每次我必须解释它时,我看到我的学生的脸,我想“这不好”。

当然,还有其他问题,比如如何构建和发布可分发包。但我认为这些不会影响大多数 python

初学者。另外,这些问题也正在得到解决。继续阅读。

输入紫外线

2月15日,astral发布了uv,我立即跳船。作为我工作的一部分,我通常必须安装许多可能存在冲突的依赖项,而 uv 立即缓解了我的压力。

但有趣的是,现在 uv 已经远远超出了最初的“更快的 pip”阶段,它正在履行其“成为快速、可靠且易于使用的综合性 python 项目和包管理器”的承诺。

回到我一开始提到的引导和激活问题,uv 是如何解决的呢?考虑一下:

uv 不依赖于 python 本身。预编译的独立二进制文件可以轻松安装在 linuxmacos 和 windows 上。uv python 管理python版本!无需求助于特定于操作系统的机制,如 pyenv、deadsnakes,或重量级工具,如 conda。uv 工具在集中式环境中管理工具!不再需要 pipx 或淡入淡出。uv init 使用孵化作为构建后端创建一个准系统 pyproject.toml 和一个带有空自述文件和虚拟模块的工作 src 布局。如果您需要更复杂的东西,您可以随时使用复印机或饼干切割机以及一些更复杂的模板。uv add 将依赖项添加到 pyproject.toml,创建一个 venv(如果不存在),并安装它们!uv run 再次执行脚本和命令,无需显式激活环境本质上,这个:

$ mkdir uv-playground$ cd uv-playground$ uv initwarning: `uv init` is experimental and may change without warningInitialized project `uv-playground`$ uv add clickwarning: `uv add` is experimental and may change without warningUsing Python 3.12.3 interpreter at: /usr/bin/python3Creating virtualenv at: .venvResolved 3 packages in 66ms   Built uv-playground @ file:///tmp/uv-playgroundPrepared 2 packages in 430msInstalled 2 packages in 0.62ms + click==8.1.7 + uv-playground==0.1.0 (from file:///tmp/uv-playground)$ tree.├── pyproject.toml├── README.md├── src│   └── uv_playground│       ├── __init__.py│       └── __pycache__│           └── __init__.cpython-312.pyc└── uv.lock4 directories, 5 files$ uv run python -c "from uv_playground import hello; print(hello())"warning: `uv run` is experimental and may change without warningHello from uv-playground!

因此,对于“我如何开始在我的电脑上学习python”这个问题,现在你可以普遍回答:“安装uv”。

一些思考

关于虚拟环境的话题,我基本上同意 armin 的说法

npm 没有任何相当于“激活”的东西就消失了,我认为未来的 python 生态系统也将不再在 virtualenv 激活中找到太多用处。

我还注意到 uv init 选择了孵化。我一直对 pdm 有一点偏爱,但我认为这可能是一个不归路。

leah 和贡献者花了很多功夫才为 pyopensci 打包指南绘制了这个决策图。但事实是,现在有一个基线

,人们可以在有更具体的需求时进行更改(例如,具有 meson 或 scikit 构建能力的构建后端),这再次提供了更好的开发人员体验。 论康达

conda 与 pip 的主题是另一个常见的混淆来源。我从第一天起就是 conda 用户和粉丝,它有效地使 python 免于死亡,当时在 windows 上安装东西非常困难。

在接下来的几年里,我经常参考 jake vanderplas 解释这些差异的旧博客文章,但现在看来已经是失败的原因了。

pip 和 conda 之间的互操作性问题从未得到完全解决,虽然我认为 pixi 人员做得非常出色,但我认为从长远来看 uv 将获胜。

我完全承认 conda 包更好地围绕非 python 代码的概念构建,并且当前“pypi 上的胖轮子”的世界显然是一个次优的解决方案。但整个生态系统已经朝这个方向发展:大多数软件包现在都为各种平台发布了预编译的轮子。

立即学习“Python免费学习笔记(深入)”;

换句话说:conda 在 2024 年可能不会像 2014 年那样有用,也许是时候停止向初学者教授它并认为它是一个高级工具了。

结论

现在有点为时过早,因为其中一些 uv 命令仍处于实验阶段,将来可能会发展。但有史以来第一次,我清楚地看到一个工作流程工具,它符合标准、全面、无引导问题、经过精心设计,而且可以

获胜

.这就是许多 python 打包评论家一直想要的,对吧?不必从许多不同的工具中进行选择。但我认为 uv 远远超出了这一点,它解决了其他开发者体验问题,对此我感到高兴和感激。

我正在有效地使用紫外线来完成所有事情,而且我不会回头。我会继续向大家推荐这个工具,继续谈论它,并希望它变得更广泛。

以上就是Python 封装现在很棒:“uv”就是您所需要的的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1348820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
使用 AWS 学习 Python – 第 1 天
上一篇 2025年12月13日 12:22:14
推荐课程:Pandas 快速入门
下一篇 2025年12月13日 12:22:33

相关推荐

  • CentOS 6/7升级最新内核并开启Google BBR

    google bbr是一款tcp加速工具,但要求linux内核必须大于4.9,之前分享过文章《centos一键升级内核并开启google bbr》,这个方法虽然方便,但是发现在raksmart上升级失败了,于是尝试手动升级内核。 CentOS 7升级最新内核代码语言:javascript代码运行次数…

    2026年8月27日
    100
  • linux如何查看64位的方法

    linux如何查看64位的方法linux如何查看64位的方法linux如何查看64位的方法linux如何查看64位的方法

    linux如何查看64位的方法: 1、首先进入lubuntu的桌面。 通过快捷键ctrl+alt+t打开终端。 在里面输入 uname -a 命令。 回车后里面看到x86_64说明是64位的系统,当然有处理器架构的前提。 或者我们可以查看常用的命令程序文件 file   /bin/ls ,比如这里我…

    2026年8月27日 用户投稿
    000
  • Amazon Nova Act— 亚马逊推出的通用 AI 智能体,自主执行网页任务

    amazon nova act:亚马逊的通用ai代理,简化浏览器任务 Amazon AGI Labs 推出的 Amazon Nova Act 是一款强大的通用人工智能代理,旨在简化网页浏览器中的任务执行。开发者可以使用配套的 SDK 构建智能体应用原型,实现诸如提交请假申请、安排日程或发送自动回复邮…

    2026年8月27日
    000
  • linux退出vi命令是什么

    linux退出vi命令是什么? 按ESC键 跳出vi的编辑命令,然后::w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件并退出vi:wq! 强制保存文件,并退出viq: 不保存文件,退出vi:q! 不保存文件,强制退出vi:e…

    2026年8月27日
    000
  • 在后端开发中,如何区分service层和dao层的职责?

    后端开发分层架构:Service层与DAO层职责详解 后端开发中,分层架构(例如包含Controller、Service和DAO层)是常见的设计模式。Controller处理前端交互,Service负责业务逻辑,DAO负责数据访问。然而,特别是引入Manager层后,Service层和DAO层的职责…

    2026年8月27日
    000
  • 在linux系统下查看网卡信息的命令是什么

    在linux系统下查看网卡信息的命令是什么? 许多windows用户非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux…

    2026年8月27日
    200
  • Python-科学计算-pandas-17-对某些列或行运算

    Python-科学计算-pandas-17-对某些列或行运算Python-科学计算-pandas-17-对某些列或行运算Python-科学计算-pandas-17-对某些列或行运算Python-科学计算-pandas-17-对某些列或行运算

    本文将介绍如何使用python的科学计算库pandas对dataframe的特定列或行进行运算,适用于windows 7系统,使用anaconda3-4.3.0.1和pycharm-community-2016.3.2编辑器,以及pandas版本0.19.2。 场景描述 假设我们有一个名为df_1的…

    2026年8月27日 用户投稿
    100
  • 深入了解Linux中的copy_{to, from}_user()(附代码)

    深入了解Linux中的copy_{to, from}_user()(附代码) 引言 我们对copy_{to,from}_user()接口的使用应该是再熟悉不过吧。基本linux书籍都会介绍它的作用。毕竟它是kernel space和user space沟通的桥梁。所有的数据交互都应该使用类似这种接口…

    2026年8月27日
    100
  • 关于Linux的缓存内存Cache Memory(图文详解)

    关于Linux的缓存内存Cache Memory(图文详解)关于Linux的缓存内存Cache Memory(图文详解)关于Linux的缓存内存Cache Memory(图文详解)关于Linux的缓存内存Cache Memory(图文详解)

    关于Linux的缓存内存Cache Memory(图文详解) 今天探究的主题是cache。我们围绕几个问题展开。为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么? 为什么需要cache memory 在思考cache是什么之前我们首先先来思考第一个问题…

    2026年8月27日 用户投稿
    100
  • Linux ls 命令详解

    Linux ls命令详解 Linux中ls命令用于显示指定工作目录下之内容,其内容就是指定的工作目录所含之文件及子目录,该命令的用法为“ls  [参数]  [目录名]”,其常用参数有“-a”、“-A”、“-l”、“-U”、“-d”、“-1”等等。 ls 常用参数      -a 显示所有文件,包含隐…

    2026年8月27日
    000
  • linux系统如何查看当前时间

    linux系统查看当前时间可以通过执行date命令实现。 具体如下: 1、查看时间和日期 命令 : date (推荐教程:linux教程) 2、设置时间和日期 例如:将系统日期设定成2009年11月3日的命令 命令 : date -s 11/03/2009 将系统时间设定成下午5点55分55秒的命令…

    2026年8月27日
    400
  • 详解linux下的vi命令

    vi命令用来进入vi编辑器,vi编辑器是所有unix及linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器。本篇文章就来带大家了解一下linux下的vi命令,简单地介绍一下它的用法。 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器。 vi的…

    2026年8月27日
    000
  • MySQL如何支持强化学习环境 使用MySQL管理强化学习状态和动作数据

    mysql可通过设计episodes、transitions、policies和hyperparameters等表构建结构化数据模型,支持强化学习的数据持久化;2. 数据写入采用批量插入策略以减少i/o开销,读取时利用索引提升采样效率,并结合json或blob字段存储复杂状态与动作;3. 为应对高并…

    2026年8月27日
    000
  • 协程调度(Scheduler)与上下文切换

    协程调度决定何时运行哪个协程,上下文切换则在调度过程中保存和恢复协程状态。1. 协程调度通过策略如优先级或轮转决定执行顺序,提高程序效率。2. 上下文切换通过关键字如yield或await实现,但频繁切换会增加性能开销。 协程调度与上下文切换是个既迷人又复杂的话题,让我们深入探讨一番。 在编程世界中…

    2026年8月27日
    000
  • 什么是Linux镜像?

    什么是Linux镜像? 镜像是一种文件形式,可以把许多文件做成一个镜象文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,可以恢复成许多文件,总之用镜象可以给用户装系统就是原样复制一份现有系统。 常用linux的镜像源地址有 1、企业贡献: 阿里云开源镜像站: http://mirrors…

    2026年8月27日
    000
  • linux中改变文件所有者的命令是什么

    linux中改变文件所有者的命令是chown命令。 chown命令用来更改文件的属主,也就是指定文件的拥有者改为另一个指定的用户或组。 (推荐教程:linux教程) 命令格式: chown [选项]… [用户][:[组]] 文件… 举例: sudo chown book:book /work…

    2026年8月27日
    000
  • 游戏服务器(Game Server)的后端架构

    游戏服务器的后端架构重要,因为它直接影响玩家的游戏体验。1) 高效的网络架构如使用tcp/ip和websocket处理客户端请求;2) 负载均衡通过nginx和haproxy分配流量;3) 数据同步使用分布式数据库如redis保证数据一致性;4) 安全性通过加密算法和验证机制防范攻击;5) 扩展性利…

    2026年8月27日
    000
  • Linux 中 whereis 命令怎么用?

    在Linux中whereis命令作用会在特定目录中查找符合条件的文件,其语法为“whereis [-bfmsu]”,其可选参数有“-b”、“-B”、“-f ”、“-m”、“-M”、“-s”、“-S”、“-u”。 Linux whereis命令用于查找文件。 该指令会在特定目录中查找符合条件的文件。这…

    2026年8月27日
    000
  • Linux 中 vim 是什么意思?

    Linux中vim是从vi发展出来的一个文本编辑器,该编辑器具有代码补完、编译及错误跳转等方便编程的功能,并且在程序员中被广泛使用,而vi是老式的文本处理器,不过功能也已经很齐全了。 Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。…

    2026年8月27日
    000
  • Linux系统怎么生成随机数

    Linux系统生成随机数的方法是:可以通过系统环境变量【$RANDOM】来实现,如【echo $RANDOM】。RANDOM的随机数范围有限,可以通过在随机数后增加加密字符串的方法来解决。 linux系统产生随机数有多种方法,下面来介绍几种: (推荐学习:linux教程) 方法一:通过系统环境变量(…

    2026年8月27日
    000

发表回复

登录后才能评论
关注微信