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
arnoldnuo
V2EX  ›  Python

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

  •  
  •   arnoldnuo ·
    123 · 23 小时 23 分钟前 · 5913 次点击

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

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

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

    你觉得 npm 好用,那是因为手没伸到这么长而已。纯 .js 包有啥好管理的。
    litchinn
        33
    litchinn  
       19 小时 46 分钟前   ❤️ 1
    npm 感觉半斤八两,工具越多的一般越难用,典型的如 pip 和 npm ,人们分别继续开发了 venv ,conda ,yarn ,pnpm...
    现在 python 的版本答案是 uv
    感觉包管理最好的就是 cargo 了
    viking602
        34
    viking602  
       19 小时 41 分钟前
    建议使用 uv
    jsq2627
        35
    jsq2627  
       19 小时 40 分钟前
    @kneo pnpm 已经把 npm 的不足都修正了。现在 pnpm/npm 的问题是,js 生态碎片化,很多简单的功能都要发 npm 包,导致一个项目有成千上万依赖。
    Suaxi
        36
    Suaxi  
       19 小时 35 分钟前
    conda 我是一个项目一个 env ,就首次安装的时候 active 一下,也还行
    1daydayde
        37
    1daydayde  
       19 小时 33 分钟前
    #9 可以满足临时的小脚本项目
    ,如果你依赖多,那么可以用 uv 来管理,在初始化项目的时候安装速度不比 npm 快一万倍?
    huijiewei
        38
    huijiewei  
       19 小时 17 分钟前
    别提 npm 了,被攻击的生活不能自理了都
    wu67
        39
    wu67  
       19 小时 3 分钟前
    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  
       19 小时 0 分钟前
    gpt 竟然没有给你 uv ?这有点出乎我意料
    smlcgx
        41
    smlcgx  
       18 小时 53 分钟前 via iPhone
    感觉 venv 够用了,一行代码进退环境,遇到新问题再想新办法
    tisswb
        42
    tisswb  
       18 小时 17 分钟前
    windows 开发:官方安装包+venv ,生产环境:pyenv+virtualenv
    jukanntenn
        43
    jukanntenn  
       18 小时 10 分钟前
    你说比不上 cargo 我是接受的,说比不上 npm 是不是侮辱性太大了?
    guanzhangzhang
        44
    guanzhangzhang  
       18 小时 4 分钟前
    试试 devcontainer
    RyougiShiki
        45
    RyougiShiki  
       17 小时 58 分钟前
    python venv 是否 active 相当于 npm 是否-g 参数,npm 默认生成配置文件和使用虚拟环境是个好习惯,python 毕竟设计的比较早算历史问题吧
    JShen
        46
    JShen  
       17 小时 39 分钟前
    @stimw 赞了,主 Java 选手,终于找到了好用的方式,刚才用 gpt 实践了 5 分钟,真的是非常 fast 好用。 类似 npm 这种软件。啥时候有可以管理 jdk 版本的软件,现在就是 8 ,到老也是 8.
    y1y1
        47
    y1y1  
       17 小时 37 分钟前
    npm ?你拿什么做比较不好
    conn4575
        48
    conn4575  
       17 小时 29 分钟前 via Android
    pip ,pyenv ,conda ,poetry ,uv ,python 里面一个虚拟环境和包管理也是折腾吐了🤢
    hxhc
        49
    hxhc  
       17 小时 25 分钟前
    conda activate 一下有什么不好吗,明确自己在哪个环境,省的搞混了搞炸了
    hicdn
        50
    hicdn  
       17 小时 21 分钟前
    推荐 mise https://github.com/jdx/mise ,太香了。
    ruanimal
        51
    ruanimal  
       17 小时 19 分钟前
    @JShen vfox
    dust2
        52
    dust2  
       17 小时 3 分钟前
    uv 工具啊
    yh7gdiaYW
        53
    yh7gdiaYW  
       16 小时 33 分钟前
    你用的啥 ide 还需要考虑这个问题? vscode 自动会给项目绑定好虚拟环境啊
    rocmax
        54
    rocmax  
       16 小时 25 分钟前 via Android
    Sped0n
        55
    Sped0n  
       16 小时 20 分钟前
    可以看看 direnv ,进特定 directory 自动激活

    https://github.com/direnv/direnv
    Hudiebbk
        56
    Hudiebbk  
       16 小时 12 分钟前
    uv 无敌好用的
    thiiadoewjwe
        57
    thiiadoewjwe  
       15 小时 36 分钟前
    C++的第三方库,能把人折磨死
    jonty
        58
    jonty  
       15 小时 11 分钟前
    目前还在手搓 cmake 的说话了吗
    amon
        59
    amon  
       15 小时 9 分钟前
    有请楼下上一张 node_modules 的那张梗图
    svenorgcn
        60
    svenorgcn  
       15 小时 4 分钟前
    @JShen sdkman
    matcloud
        61
    matcloud  
       14 小时 13 分钟前
    uv
    fgwmlhdkkkw
        62
    fgwmlhdkkkw  
       13 小时 16 分钟前 via Android
    shell 都有 profile ,你可以修改。
    wonderfulcxm
        63
    wonderfulcxm  
       11 小时 42 分钟前
    可拉倒吧,python 比 node 那套好用一万倍
    KaitoHH
        64
    KaitoHH  
       11 小时 36 分钟前   ❤️ 1
    conda 不完全是一个纯粹的 python 包管理器,因为它还可以帮你管理非 python 依赖,比如帮你在非系统层面安装各种 lib 库、cuda 、nvcc 等等,不污染本身的系统环境,这一块还是比别的 python 包管理器好不少的
    aarontian
        65
    aarontian  
       11 小时 27 分钟前
    我觉得 conda 挺好用的。。适合本地固定几个环境,但可能会有一堆项目的场景,配合 jupyter 也好用,需要做点数据分析的话很好使。
    几乎所有 IDE 进 terminal 都会自动 conda activate ,需要手动敲的时候很少。
    部署的话直接 docker ,也就维护个 requirements.txt

    uv 也不错,不过我本机开发习惯比较随意一些,一方面项目很多,一方面有时候随便开个目录就开写了,还是喜欢用 conda
    vitality
        66
    vitality  
       11 小时 6 分钟前
    uv ,我对 uv 的评价是快到极致。
    JCZ2MkKb5S8ZX9pq
        67
    JCZ2MkKb5S8ZX9pq  
       10 小时 52 分钟前
    啥时候 uv 能支持 pnpm 那种全局 store 就好了,不然还是太占空间了。
    我这种碎小项目多的 pandas 啥的重复装可受不了。
    Eureka0
        68
    Eureka0  
       10 小时 26 分钟前
    @JCZ2MkKb5S8ZX9pq uv 是支持的,把 [link-mode]( https://docs.astral.sh/uv/reference/settings/#link-mode) 设置成 symlink 就行了,我就是这么用的,能节省不少空间
    runze
        69
    runze  
       5 小时 8 分钟前
    @JShen #46 试试 jbang
    yjhatfdu2
        70
    yjhatfdu2  
       1 小时 26 分钟前
    conda 太傻逼了,用了小心给你发律师函
    xuyang2
        71
    xuyang2  
       30 分钟前
    > 为什么 Python 的包管理这么难用

    因为 Python 生于 1994 年
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5746 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 02:41 · PVG 10:41 · LAX 18:41 · JFK 21:41
    ♥ Do have faith in what you're doing.