推荐学习书目
› 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 · Nov 25, 2025 · 18415 views
    This topic created in 343 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    因为 Python 生于 1994 年
    leeg810312
    leeg810312
    Nov 26, 2025
    72
    python 包管理又这么多工具,侧面证明包管理生态太烂了,这么多年发展都没有彻底改变这个状况
    godall
    godall
    Nov 26, 2025 via Android
    73
    @MareDevi 请问在集成开发工具下比如 cursor 里可以用吗?
    JCZ2MkKb5S8ZX9pq
    JCZ2MkKb5S8ZX9pq
    Nov 26, 2025
    74
    @Eureka0
    第一次知道这个设置,感谢。
    我是 Mac ,看上去默认的 clone 就可以了。
    之前不知道 clone 这个模式,看到不是符号链接以为它给复制了。
    wangtian2020
    wangtian2020
    Nov 27, 2025
    75
    确实不如 npm 一根毛,有些 body 以为遇到几个要 node-gyp 编译的二进制包就以为是 npm 的全部了,大多数 node 包直接装几秒就装好
    MareDevi
    MareDevi
    Dec 1, 2025
    76
    @godall #73 二者并不冲突,mise 是通过 shims 自动切换管理你的环境变量来管理环境,现代 ide 一般都能自动检测当前目录下的虚拟环境
    kingfighters
    kingfighters
    Dec 8, 2025
    77
    你要是觉得切换目录就要切换虚拟环境,可以试一下 direnv
    pyKane
    pyKane
    Jan 1
    78
    楼主是不是把事情弄的复杂了。
    用原生自带的,都很好用呀
    venv + pip + requirements.txt
    一个项目基本上上面三个是标准呀。
    Pychram 默认也自动识别项目下的 .venv 虚拟环境。

    一直这样用,个个项目之间切换,包的版本依赖管理,都在 requirements.txt 里定义。

    完全没碰到啥问题。
    shinecurve
    79
    uv
    codists
    codists
    Jan 19
    80
    好奇 OP 使用什么开发工具或者使用场景是怎么样的?使用 Pycharm, VSCode 都是自动激活,完全不需要每次都去手动激活。
    altriabot
    81
    mise+uv
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5342 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 200ms · UTC 02:24 · PVG 10:24 · LAX 18:24 · JFK 21:24
    ♥ Do have faith in what you're doing.