[{"content":"uv、conda、poetry对比分析 1. 本质定位差异 uv → 由 Astral（原 Ruff 团队）开发的超高速 Python 包管理 + 虚拟环境管理工具，定位是替代 pip + venv + pip-tools + poetry 的依赖管理部分。\npoetry → Python 生态内主流的项目依赖管理 + 构建发布工具，偏全能型，但速度一般。\nconda → 跨语言包管理器（Python、C/C++ 库等都能管），带自己的二进制包渠道（conda-forge、Anaconda），主要优势是科学计算依赖的二进制分发。\n2. uv 相比 poetry / conda 的主要优势 (1) 极快的速度 核心是 Rust 实现 + 并行下载 + 本地缓存，冷装比 pip/poetry 快数倍，热装基本秒级。\n官方实测：安装 100 个依赖的项目，uv 比 poetry 快 810 倍，比 conda 快 1520 倍。\n第一性原理：速度取决于 IO 并发能力 + 解析算法效率。pip/poetry 都是 Python 实现，单线程解析，uv 用 Rust 并发解析 + 请求，效率差距天然存在。\n(2) 与 pip 完全兼容 poetry 有自己的依赖解析器和 lock 格式，和 pip 不是完全兼容；conda 更是独立体系。\nuv 支持直接读写 pyproject.toml、requirements.txt，无额外格式锁定，方便和现有 pip 流程混用。\n可以用 uv pip install 无缝替代 pip，但享受 uv 的速度和缓存。\n(3) 内置跨项目共享缓存 安装的 wheel/sdist 缓存是全局的，不同项目重复依赖无需重新下载/构建。\npoetry 的缓存范围较小，conda 虽然有缓存，但 channel 更新时会触发大量重新下载。\n(4) 单文件可执行，零环境依赖 uv 是单独的二进制文件（类似 ripgrep、fd），直接下载运行，不依赖 Python 预安装。\npoetry 自身需要 Python 运行环境，conda 则要安装 Anaconda/Miniconda 体积很大。\n(5) 高效锁定与解析 uv 的解析器（基于 Rust）能在毫秒级完成依赖树解析并生成 uv.lock。\npoetry 的解析是 Python 实现，对复杂依赖树（尤其是冲突检查）会慢很多。\nconda 解析复杂环境时（尤其混合 python+非python包）非常慢。\n(6) 轻量化 \u0026amp; 单一职责 uv 目标是“快速安装、解析、锁定、运行”，构建/发布功能交给成熟工具（如 hatch、setuptools）。\npoetry 集成了构建/发布，功能多但容易卡在某个子模块更新慢的问题。\nconda 则功能更多，但在纯 Python 项目中显得过重。\n3. 对比表 维度 uv poetry conda 实现语言 Rust Python Python/C 混合 安装速度 极快（秒级） 中等（pip 级别） 慢（解析耗时长） 依赖解析 Rust 并发解析 Python 单线程解析 SAT 求解器，慢但支持跨语言 缓存机制 全局共享缓存 项目级+有限全局 全局，但更新容易触发重下 与 pip 兼容性 完全兼容 部分（lock 不兼容） 基本不兼容 二进制分发 依赖 PyPI wheel 依赖 PyPI wheel 内置二进制（科学计算友好） 适合场景 现代 Python 项目，追求极致速度 全能型 Python 项目管理 跨语言依赖、大型科学计算 构建/发布 无（交给 hatch 等） 内置 无 安装体积 单二进制，小 依赖 Python Anaconda 大，Miniconda 中等 4. 关键洞见 uv 是 Python 依赖管理的“加速器”，不是全能替代品，如果你的项目还需要构建/发布，可能需要配合 hatch、setuptools 等。\nconda 的核心价值是非 Python 库的二进制分发，在纯 Python 场景反而累赘。\npoetry 在“开发体验一体化”上依然有价值，比如版本管理、发布流程集成，但速度被 uv 完爆。\nuv 现在正处于功能扩展期，未来可能接近 poetry 的一体化，但现在更适合“高性能依赖安装/解析”任务。\n5. 常用命令大全 # 创建虚拟环境 uv venv --python=3.12 uv venv --python=3.10 # 激活虚拟环境 # For macOS/Linux source .venv/bin/activate # For Windows .venv\\Scripts\\activate # 离开虚拟环境 deactivate # 虚拟环境安装包，但不会写入到工程依赖中【不推荐】 uv pip install xxx # 用uv init来完整地管理它的相关环境依赖，项目相关的依赖都会明明白白地写在项目的配置文件中，后面在不同的机器上也能够很快地搭建起这个环境。 uv init . # uv add等同于uv pip install，且会写入到工程依赖中 uv add xxx # uv remove等同于 uv pip uninstall，且会将xxx包从工程依赖中移除 uv remove xxx # 查看工程依赖包的树状结构 uv tree # 同步锁定依赖（高级用法）根据 requirements.txt 或 requirements.lock 精确安装依赖，保持团队环境一致 uv sync 6. 注意事项 (1) 在项目中更新依赖包并同步更新uv.lock/pyproject.toml 在使用 uv 管理 Python 项目依赖时，如果要引入或更新一个包，并保证 uv.lock 与 pyproject.toml 同步更新，可以按以下两种情况处理：\n不知道目标包的具体版本号 以 langgraph 为例，有两种方法：\n方法一（推荐）\n直接移除再添加，让 uv 自动解析最新版本并写入配置：\nuv remove langgraph uv add langgraph 方法二（不推荐）\n利用 uv lock \u0026ndash;upgrade-package 升级锁文件：\nuv lock --upgrade-package langgraph uv sync 缺点：此方法只会更新 uv.lock，不会同步更新 pyproject.toml，容易导致配置不一致。\n已知目标包的具体版本号 显式指定版本更新：\nuv add langgraph==0.6.2 这样会同时更新 pyproject.toml 和 uv.lock，保证依赖版本锁定一致。\n💡 小贴士\nuv add 会自动处理安装、依赖解析和配置文件更新，是 uv 最推荐的依赖变更方式。\n避免手动改 pyproject.toml 再运行 uv lock，因为容易遗漏同步步骤。\n如果想一次升级多个包，可用：\nuv remove 包1 包2 \u0026amp;\u0026amp; uv add 包1 包2 ","permalink":"https://www.mackyan.com/posts/2025-08-11_uv%E4%B8%80%E7%AB%99%E5%BC%8F%E7%8E%AF%E5%A2%83%E7%AE%A1%E7%90%86/","summary":"\u003ch3 id=\"uvcondapoetry对比分析\"\u003euv、conda、poetry对比分析\u003c/h3\u003e\n\u003ch4 id=\"1-本质定位差异\"\u003e1. 本质定位差异\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003euv\u003c/strong\u003e → 由 Astral（原 Ruff 团队）开发的\u003cstrong\u003e超高速 Python 包管理 + 虚拟环境管理工具\u003c/strong\u003e，定位是\u003cstrong\u003e替代 pip + venv + pip-tools + poetry 的依赖管理部分\u003c/strong\u003e。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003epoetry\u003c/strong\u003e → Python 生态内主流的\u003cstrong\u003e项目依赖管理 + 构建发布工具\u003c/strong\u003e，偏全能型，但速度一般。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003econda\u003c/strong\u003e → 跨语言包管理器（Python、C/C++ 库等都能管），带自己的二进制包渠道（conda-forge、Anaconda），主要优势是\u003cstrong\u003e科学计算依赖的二进制分发\u003c/strong\u003e。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e","title":"uv一站式环境管理工具"},{"content":"基于Hugo的blog搭建 1. macOS安装Hugo brew install hugo 验证安装\nhugo version 实际安装版本：hugo v0.148.2\n2. 创建Hugo博客项目 hugo new site mackyan --format yaml cd mackyan 3. 添加主题 选择主题：以PaperMod为例\ngit init git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod 如果是 clone 了其他人的博客项目进行修改，则需要用以下命令进行初始化：\ngit submodule update --init --recursive 如果需要同步主题仓库的最新修改，需要运行以下命令：\ngit submodule update --remote 4. 设置主题 vim hugo.yaml 添加内容\ntheme: PaperMod 5. 写第一篇文章 hugo new posts/first.md vim content/posts/first.md 新建的文章位于content/posts目录下，编辑内容如下：\n--- title: \u0026#34;First Blog Post\u0026#34; date: 2025-08-03 draft: false --- 欢迎来到我的 Hugo 博客！ 6. 本地预览博客 hugo server -D 打开浏览器访问：http://localhost:1313\n7. 配置博客信息（可选） 修改hugo.yaml中加入更多信息：\nbaseURL: \u0026#34;https://mackyan.github.io/\u0026#34; languageCode: zh-cn title: Mack Yan theme: PaperMod enableEmoji: true pagination: disableAliases: false pagerSize: 10 params: author: Mack ShowToc: true ShowReadingTime: true ShowPostNavLinks: true 使用Github Actions自动部署 详细配置步骤参考资料2和资料4。\n目前有两个仓库：\nmackyan（private）：hugo博客的根目录 mackyan.github.io（public）：存放hugo生成的静态文件，即mackyan/public目录 在mackyan根目录下建立.github/workflows/hugo.yml文件，配置如下内容：\nname: deploy on: push: workflow_dispatch: schedule: # Runs everyday at 8:00 AM - cron: \u0026#34;0 0 * * *\u0026#34; jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 with: submodules: true fetch-depth: 0 - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: hugo-version: \u0026#34;latest\u0026#34; - name: Build Web run: hugo - name: Deploy Web uses: peaceiris/actions-gh-pages@v3 with: PERSONAL_TOKEN: ${{ secrets.GH_PAGE_ACTION_TOKEN }} EXTERNAL_REPOSITORY: mackyan/mackyan.github.io PUBLISH_BRANCH: main PUBLISH_DIR: ./public commit_message: ${{ github.event.head_commit.message }} 其中PERSONAL_TOKEN根据下图创建和使用: 总结 当完成以上环境的部署之后，接下来的常见操作就是：\nhugo new posts/xxx.md新建文章（或者 hugo new posts/xxx/index.md）\n添加或修改文章内容\n上传push更新修改到GitHub\n自动执行github actions，生成静态文件，部署到xxx.github.io的github pages\n个人网站查看网页文章是否生效\n参考资料 Hugo-PaperMod installation wiki Hugo + GitHub Action，搭建你的博客自动发布系统 搭建 Hugo 个人网站｜PaperMod 主题 使用github actions自动部署hugo博客（隐藏网站根目录） 给Hugo PaperMod增加giscus评论系统 PaperMod添加Follow RSS订阅认证 ","permalink":"https://www.mackyan.com/posts/2025-08-05_%E5%9F%BA%E4%BA%8Ehugo%E5%92%8Cgithub-action%E6%90%AD%E5%BB%BAblog/","summary":"\u003ch3 id=\"基于hugo的blog搭建\"\u003e基于Hugo的blog搭建\u003c/h3\u003e\n\u003ch4 id=\"1-macos安装hugo\"\u003e1. macOS安装Hugo\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ebrew install hugo\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e验证安装\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ehugo version\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e实际安装版本：hugo v0.148.2\u003c/p\u003e\n\u003ch4 id=\"2-创建hugo博客项目\"\u003e2. 创建Hugo博客项目\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ehugo new site mackyan --format yaml\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e mackyan\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch4 id=\"3-添加主题\"\u003e3. 添加主题\u003c/h4\u003e\n\u003cp\u003e选择主题：以PaperMod为例\u003c/p\u003e","title":"基于Hugo和Github Action搭建blog"},{"content":"这是我的个人介绍，啊哈！\n","permalink":"https://www.mackyan.com/about/","summary":"\u003cp\u003e这是我的个人介绍，啊哈！\u003c/p\u003e","title":""}]