V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
arnoldnuo
V2EX  ›  程序员

为什么 Python 的包管理这么难用,比 node 的 npm 难用一万倍,每次进入项目都要手动执行一下 conda activate xxx,难道就没有默认的 Python 项目级别的依赖吗?

  •  
  •   arnoldnuo ·
    123 · 7 小时 54 分钟前 · 3817 次点击

    chatgpt 也没给一个实用的方案,你们都是怎么管理自己的 python 环境的?

    57 条回复    2025-11-25 19:05:26 +08:00
    stimw
        1
    stimw  
       7 小时 53 分钟前   ❤️ 6
    快 2026 了,uv 应该是版本答案了吧
    https://docs.astral.sh/uv/
    MareDevi
        2
    MareDevi  
       7 小时 52 分钟前
    pdm 启用 uv 后端,同时搭配 mise 使用体验更佳
    TArysiyehua
        3
    TArysiyehua  
       7 小时 50 分钟前
    .venv
    superrichman
        4
    superrichman  
       7 小时 49 分钟前
    pycharm 自动管理虚拟环境。
    你要不喜欢 ide 就用 pyenv ,设置好之后 cd 进目录自动进项目的虚拟环境。
    jpyl0423
        5
    jpyl0423  
       7 小时 46 分钟前
    没用过 conda ,vscode 不是打开项目自己激活环境吗
    actors111
        6
    actors111  
       7 小时 41 分钟前
    一直用 venv , conda 太笨重了.
    deplives
        7
    deplives  
       7 小时 40 分钟前
    2025 年了,还在用 conda 吗
    heyzenxu
        8
    heyzenxu  
       7 小时 35 分钟前
    远一点的 poetry 2018 年就有了, 近一点的 uv 和 pixi, 怎么就难用了
    kxg3030
        9
    kxg3030  
       7 小时 35 分钟前   ❤️ 1
    python -m venv .venv
    linux:source .venv/bin/active
    windows:source .venv/Scripts/active
    这很难吗
    ratazzi
        10
    ratazzi  
       7 小时 30 分钟前
    mise + uv 好用的很
    whenov
        11
    whenov  
       7 小时 25 分钟前
    shell 设个短点的 alias 不就行了
    crocoBaby
        13
    crocoBaby  
       7 小时 14 分钟前
    昨晚刚刷到的 python 包管理教程,就用 uv 可以了,相当于 npm 的 yarn
    privil
        14
    privil  
       7 小时 12 分钟前
    每次进入项目都要手动执行一下 conda activate xxx 你就不能装个自动激活环境的程序吗? direnv 了解下
    glacer
        15
    glacer  
       7 小时 8 分钟前
    习惯用 venv 了,conda 一直玩不来,太重了
    fkdtz
        16
    fkdtz  
       6 小时 46 分钟前
    恰恰相反,我就喜欢这种一切尽在掌控的感觉
    想切什么环境、当前在什么环境,完全自己说了算
    嫌麻烦配命令就好了
    Greendays
        17
    Greendays  
       6 小时 30 分钟前
    就用的 venv ,一个项目一个,比较吃硬盘但是很稳定。
    hertzry
        18
    hertzry  
       6 小时 27 分钟前
    function ca(){
    conda activate $1
    }
    donaldturinglee
        19
    donaldturinglee  
       6 小时 20 分钟前
    每个项目是独立的环境应该才是正确的做法吧。统一的环境除非你只做单个项目,不然你只要一个项目的依赖出了问题,其余的一定会爆炸
    YanSeven
        20
    YanSeven  
       5 小时 55 分钟前
    uv 随着大模型的兴起应该算是主流方案了?
    treblex
        21
    treblex  
       5 小时 46 分钟前 via iPhone
    UV 有本地梯子还行,上服务器更麻烦了,哎
    Aprdec
        22
    Aprdec  
       5 小时 27 分钟前
    ..venv 不也得激活环境吗 楼上和 conda 有啥区别 楼主不就是嫌麻烦吗
    longredzzz
        23
    longredzzz  
       5 小时 25 分钟前
    给项目配一下 direnv 实现 shell 自动激活环境。
    python 环境管理我用 pixi,能管理 conda 包 和 pypi 包
    craftsmanship
        24
    craftsmanship  
       5 小时 23 分钟前 via Android
    UV 你值得拥有
    skuuhui
        25
    skuuhui  
       5 小时 14 分钟前
    自从用 AI 编程,从来没有在命令行输入过 python 相关命令了
    reoah2
        26
    reoah2  
       5 小时 10 分钟前
    windows 下 vscode 打开 terminal 会自动执行:./venv/Scripts/Activate.ps1 ,一进 terminal 就是虚拟环境了,这很好用啊
    wuruxu
        27
    wuruxu  
       4 小时 40 分钟前
    apt-get 想要什么包都有
    coreJK
        28
    coreJK  
       4 小时 36 分钟前
    从开始学 python 使用自带的 venv 到现在
    pyenv ,pix ,pdm ,uv 都用过了,分享一点点心得吧

    半自动
    1. pyenv: 管理多版本的 python 环境好手,windows 和 ubuntu 中都可以实现方便的多版本切换,但是要注意和其他修改环境变量的程序(比如 ros 机器人开发框架),但是也得科学上网的情况下用,不然容易卡在下载 python 安装包的时候

    2. pipx: 这个可以理解是,用来管理用 python 开发和发布的一些工具管理,比如 labelme ,youtube dowload 这类工具,可以独立成一个系统工具(其实还是建立了一个虚拟环境,然后再在这个独立的环境安装了工具,避免污染系统的 pip 环境依赖)

    往“全自动”方向发展
    3.pdm: 在他之前还有一个 poetry ,能够管 python 一整个开发周期(版本管理、环境管理、依赖管理、打包 whl 分发),pdm 有一点比 uv 方便,他管理的依赖可以跨平台,在写 pyqt 的时候,loguru 模块在 win 和 linux 环境下会到一个 win32ctime 模块,pdm 默默的做了模块区分系统环境的事情,帮我节省了很多(我尝试用 uv 重新管理这个项目,结果出现了模块依赖的问题,uv 好像也有区分的办法,需要自己编写目前,我用得还不熟 XD )

    4.uv: 非常快,做的事情和 pdm 、poetry 差不多,也是为了能够管理整个开发周期,还可以做 pipx 做的事情,管理一些开发工具

    pdm 、和 uv 一定要注意他们的缓存,空间不够很可能爆目录目录...,
    本人也还在摸索和在实际工作中使用,才学疏浅,大佬们指正
    coreJK
        29
    coreJK  
       4 小时 31 分钟前
    补充一点,pdm 和 uv 都可以针对特殊的 pytorch 类的包(包括但不限于),专门分配对应的 index
    版主应该最容易遇到的是这个问题,和 pytorch 有关的,现在可以参考这两个工具的方案

    1. uv 的方案:https://uv.oaix.tech/guides/integration/pytorch/?h=pytorch
    2. pdm 的方案: https://pdm-project.org/zh-cn/latest/usage/config/#_5
    kneo
        30
    kneo  
       4 小时 31 分钟前
    python 和 node ,人称依赖管理界的卧龙凤雏。现在 node 说我的 npm 比你好用一万倍,说完自己都笑了。
    liu938651469
        31
    liu938651469  
       4 小时 29 分钟前 via Android
    pyenv 任意 py 版本 再和 uv 配合好了
    est
        32
    est  
       4 小时 26 分钟前
    与其说是 py 的包管理烂,不如说 py 是 C 库的附庸。

    py 的所有包管理机制烂的根源就是 .so .dll 不好管理导致的。还有一些逆天玩意是源码分发,你就可劲儿折腾吧。

    你觉得 npm 好用,那是因为手没伸到这么长而已。纯 .js 包有啥好管理的。
    litchinn
        33
    litchinn  
       4 小时 18 分钟前
    npm 感觉半斤八两,工具越多的一般越难用,典型的如 pip 和 npm ,人们分别继续开发了 venv ,conda ,yarn ,pnpm...
    现在 python 的版本答案是 uv
    感觉包管理最好的就是 cargo 了
    viking602
        34
    viking602  
       4 小时 13 分钟前
    建议使用 uv
    jsq2627
        35
    jsq2627  
       4 小时 11 分钟前
    @kneo pnpm 已经把 npm 的不足都修正了。现在 pnpm/npm 的问题是,js 生态碎片化,很多简单的功能都要发 npm 包,导致一个项目有成千上万依赖。
    Suaxi
        36
    Suaxi  
       4 小时 6 分钟前
    conda 我是一个项目一个 env ,就首次安装的时候 active 一下,也还行
    1daydayde
        37
    1daydayde  
       4 小时 5 分钟前
    #9 可以满足临时的小脚本项目
    ,如果你依赖多,那么可以用 uv 来管理,在初始化项目的时候安装速度不比 npm 快一万倍?
    huijiewei
        38
    huijiewei  
       3 小时 49 分钟前
    别提 npm 了,被攻击的生活不能自理了都
    wu67
        39
    wu67  
       3 小时 34 分钟前
    venv 呀...以我自己玩的 fastapi 为例

    python3 -m venv venv

    Makefile 里面写好:
    VENV_ACTIVATE = . venv/bin/activate

    dev:
    写个 tab 在这$(VENV_ACTIVATE) && uvicorn main:app --reload --host 0.0.0.0 --port=3000

    然后手动写好 requirements.txt, 执行:
    pip install -r requirements.txt

    启动的时候跑 make dev 就行了, ctrl c 终结命令的时候, 会自动退出虚拟环境
    uni
        40
    uni  
       3 小时 31 分钟前
    gpt 竟然没有给你 uv ?这有点出乎我意料
    smlcgx
        41
    smlcgx  
       3 小时 25 分钟前 via iPhone
    感觉 venv 够用了,一行代码进退环境,遇到新问题再想新办法
    tisswb
        42
    tisswb  
       2 小时 49 分钟前
    windows 开发:官方安装包+venv ,生产环境:pyenv+virtualenv
    jukanntenn
        43
    jukanntenn  
       2 小时 42 分钟前
    你说比不上 cargo 我是接受的,说比不上 npm 是不是侮辱性太大了?
    guanzhangzhang
        44
    guanzhangzhang  
       2 小时 35 分钟前
    试试 devcontainer
    RyougiShiki
        45
    RyougiShiki  
       2 小时 29 分钟前
    python venv 是否 active 相当于 npm 是否-g 参数,npm 默认生成配置文件和使用虚拟环境是个好习惯,python 毕竟设计的比较早算历史问题吧
    JShen
        46
    JShen  
       2 小时 10 分钟前
    @stimw 赞了,主 Java 选手,终于找到了好用的方式,刚才用 gpt 实践了 5 分钟,真的是非常 fast 好用。 类似 npm 这种软件。啥时候有可以管理 jdk 版本的软件,现在就是 8 ,到老也是 8.
    y1y1
        47
    y1y1  
       2 小时 8 分钟前
    npm ?你拿什么做比较不好
    conn4575
        48
    conn4575  
       2 小时 0 分钟前 via Android
    pip ,pyenv ,conda ,poetry ,uv ,python 里面一个虚拟环境和包管理也是折腾吐了🤢
    hxhc
        49
    hxhc  
       1 小时 57 分钟前
    conda activate 一下有什么不好吗,明确自己在哪个环境,省的搞混了搞炸了
    hicdn
        50
    hicdn  
       1 小时 52 分钟前
    推荐 mise https://github.com/jdx/mise ,太香了。
    ruanimal
        51
    ruanimal  
       1 小时 50 分钟前
    @JShen vfox
    dust2
        52
    dust2  
       1 小时 34 分钟前
    uv 工具啊
    yh7gdiaYW
        53
    yh7gdiaYW  
       1 小时 4 分钟前
    你用的啥 ide 还需要考虑这个问题? vscode 自动会给项目绑定好虚拟环境啊
    rocmax
        54
    rocmax  
       57 分钟前 via Android
    Sped0n
        55
    Sped0n  
       52 分钟前
    可以看看 direnv ,进特定 directory 自动激活

    https://github.com/direnv/direnv
    Hudiebbk
        56
    Hudiebbk  
       44 分钟前
    uv 无敌好用的
    thiiadoewjwe
        57
    thiiadoewjwe  
       7 分钟前
    C++的第三方库,能把人折磨死
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3283 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:13 · PVG 19:13 · LAX 03:13 · JFK 06:13
    ♥ Do have faith in what you're doing.