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

pdm 还是 dev container?

  •  
  •   stimw · 2024-02-05 19:04:10 +08:00 · 2756 次点击
    这是一个创建于 368 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前用到 python 的地方基本就是数据分析、深度学习,这块标准答案应该就是 conda ,我一直以来也是用 miniconda 来管理环境。

    现在要写 fastapi ,conda 用起来就有点痛苦了。当然 conda 也可以导出evironment.yml,但是这玩意似乎也只能用来 create 新环境,不能像其他包管理器一样根据包版本差异直接 install 。

    研究了一下现在比较好用的就是 pdm ,可以创建新的 venv (不太想搞这么多 venv...),也可以复用 conda 的 venv ,但是看了半天复用的话也不知道会不会影响 conda 的环境里的包。

    还有一个选择就是 vscode 的 dev container ,直接容器内开发可能是一个比较好的选择,但是没尝试过。

    第 1 条附言  ·  2024-02-06 23:37:15 +08:00
    已经改用 pdm 。。。世界清净。。
    conda 会装一些冗余的依赖,导致 cross-platform 很容易出错。
    第 2 条附言  ·  2024-02-06 23:39:30 +08:00
    dev container 用了下也不错,但是比较吃资源,小项目就懒得用了。
    29 条回复    2024-02-26 18:04:44 +08:00
    FlytoSirius
        1
    FlytoSirius  
       2024-02-05 19:14:00 +08:00
    上 Dev Container 可能是你的最终方案吧
    行业里也都是这么做的.

    否则一个操作系统环境 终归容易出问题
    Yuhyeong
        2
    Yuhyeong  
       2024-02-05 19:21:43 +08:00
    哥们讲讲 fastapi 在 conda 里怎么个情况,我自己用着没啥问题啊
    youngce
        3
    youngce  
       2024-02-05 19:29:48 +08:00
    我们这边无论是开发的时候用什么管理( conda 、venv 、poetry 、pyenv 、pdm...),最终打 dockerfile 必须提供 requirement.txt🤣 其实对于 pycharm 用户 conda 、venv 、poetry 的支持都很好了
    stimw
        4
    stimw  
    OP
       2024-02-05 19:32:06 +08:00
    @Yuhyeong 我的,我刚发现可以 conda env update --file environment.yml 。但是 conda 也有点问题,很多包在 conda 里没有,虽然也可以用 conda 里的 pip 装,但是来回倒腾总是会遇到一些莫名其妙的问题,要么就是 conda 卡在检查环境了。
    lxdlam
        5
    lxdlam  
       2024-02-05 21:10:20 +08:00
    目前主用 rye ,只能说非常舒服
    stimw
        6
    stimw  
    OP
       2024-02-05 23:51:55 +08:00
    @youngce 本地用包管理的话,如果一个项目对应一个 venv ,那项目一多切得过来环境都很麻烦。。。
    zhusimaji
        7
    zhusimaji  
       2024-02-05 23:53:41 +08:00
    开发 vscode +wsl2+miniconda ,线上 docker 指定 pip 安装,少的话直接写在 docker file 里,多的话还是放 requirement.txt ,目前用的很稳
    lidashuang
        8
    lidashuang  
       2024-02-06 02:14:20 +08:00
    我用 pdm
    dayeye2006199
        9
    dayeye2006199  
       2024-02-06 08:06:08 +08:00 via Android
    我选择老掉牙的 venv 和 pip
    RockShake
        10
    RockShake  
       2024-02-06 08:15:01 +08:00 via Android
    如果只是包管理,poetry pipenv pdm 都没什么问题,IDE 对虚拟环境已经非常完善,只有之前用 pdm 的时候需要自己配置一下路径。
    dup2graph
        11
    dup2graph  
       2024-02-06 08:51:59 +08:00
    感觉开发 fastapi ,用 dev container 有点重?
    感觉 pyenv, venv, pdm 都没啥问题
    lostsquirrelX
        12
    lostsquirrelX  
       2024-02-06 11:26:30 +08:00
    不想太多 venv 就不给你推荐 pipenv 了
    iorilu
        13
    iorilu  
       2024-02-06 15:00:52 +08:00   ❤️ 1
    切勿在这些无聊的事情上花很多时间

    就用最熟悉的就行

    太多选择也是 python 的问题
    shimada666
        14
    shimada666  
       2024-02-06 15:29:39 +08:00
    我选择老掉牙的 venv 和 pip + 1
    noparking188
        15
    noparking188  
       2024-02-06 15:55:04 +08:00
    virtualenv + pip + pycharm
    stimw
        16
    stimw  
    OP
       2024-02-06 18:12:12 +08:00
    @iorilu 不是无聊。。是 conda 在这种事上真的难用。。
    比如我刚在 linux 上 `conda env export` 出 environment.yml ,回 mac 上`conda env update`就报错了。。

    https://smms.app/image/klDKLFvo5PSdMaW
    stimw
        17
    stimw  
    OP
       2024-02-06 18:15:20 +08:00
    @zhusimaji 这种问题有遇到吗?刚在 linux 上 `conda env export` 出 environment.yml ,回 mac 上`mamba env update`就报错。channel 都是 conda-forge 。我是真受不了了。。

    https://smms.app/image/klDKLFvo5PSdMaW
    iorilu
        18
    iorilu  
       2024-02-06 18:38:06 +08:00
    @stimw 主要是目前 python 圈公认这事没有统一, 公认的最佳方案

    每个人都不一样

    那自然是你熟悉那个就那个

    我个人仍然就用最简单的 venv + requirement , 至于多装几个包, 我也无所谓

    或者手动维护两个, 一个 dev 的, 一个 production 的
    zhusimaji
        19
    zhusimaji  
       2024-02-06 23:05:32 +08:00 via iPhone
    @stimw 我现在在 win 下不捣鼓环境呢,都丢到 wsl 里面了,你说的问题没遇到过
    zhusimaji
        20
    zhusimaji  
       2024-02-06 23:07:20 +08:00 via iPhone
    @stimw 看到 gcc 猜测跟 os 有关?你试试开个 docker 在 mac 下试试
    Alias4ck
        21
    Alias4ck  
       2024-02-07 15:26:43 +08:00
    rye
    stimw
        22
    stimw  
    OP
       2024-02-07 16:41:49 +08:00 via Android
    @Alias4ck 我看到官网介绍目前还是“very experimental”

    它相比 pdm 的优点是什么?我看文档提到的一个是用户可以通过 rye 安装 python 发行版,而 pdm 创建 virtualenv 需要系统已经安装对应的 python 版本。

    除此之外没有发现其他的优点,能不能跟 conda 合理共存要打个问号。目前 pdm 是可以的。
    Alias4ck
        23
    Alias4ck  
       2024-02-07 17:04:29 +08:00
    @stimw 有两篇文章分析了这些包工具,rye 也不算实验性,openai-python( https://github.com/openai/openai-python/tree/main)就是用 rye 管理的,pdm 缺少了 python version 管理和 poetry 一样,
    我的出发点是因为它是 rust 写的哈哈

    1:https://alpopkes.com/posts/python/packaging_tools/?utm_source=substack&utm_medium=email
    2:https://chriswarrick.com/blog/2024/01/15/python-packaging-one-year-later/
    stimw
        24
    stimw  
    OP
       2024-02-07 21:10:58 +08:00
    @Alias4ck #23 有遇到坑吗?
    Alias4ck
        25
    Alias4ck  
       2024-02-07 21:52:57 +08:00
    @stimw 写 c extension 的话可能会不方便,它用 hatch 打包的,暂时没碰到,有坑的话可以去提 issue,作者是 flask 的 creator
    stimw
        26
    stimw  
    OP
       359 天前 via Android
    @Alias4ck 用了几天感觉很好用。就是文档比 pdm 少了很多东西。
    Alias4ck
        27
    Alias4ck  
       357 天前
    @stimw wow,今天 rye 更新了新 feature 接入 uv( https://github.com/astral-sh/uv)(对就是那个写 ruff 的又写了一个比肩 pip 的) 卧槽这下载的速度比 pip 不是快一点点 我只能用丝滑来形容这安装依赖的速度
    stimw
        28
    stimw  
    OP
       357 天前
    @Alias4ck #27 我看了 discussion ,作者好像准备让 rye 合并到 uv 里。。。
    Alias4ck
        29
    Alias4ck  
       347 天前
    @stimw 并没有 但是 rye 已经成为 astral 维护的项目了 变成了公司维护了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3036 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:04 · PVG 21:04 · LAX 05:04 · JFK 08:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.