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 · 82 天前 · 2083 次点击
    这是一个创建于 82 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    就用最熟悉的就行

    太多选择也是 python 的问题
    shimada666
        14
    shimada666  
       81 天前
    我选择老掉牙的 venv 和 pip + 1
    noparking188
        15
    noparking188  
       81 天前
    virtualenv + pip + pycharm
    stimw
        16
    stimw  
    OP
       81 天前
    @iorilu 不是无聊。。是 conda 在这种事上真的难用。。
    比如我刚在 linux 上 `conda env export` 出 environment.yml ,回 mac 上`conda env update`就报错了。。

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

    https://smms.app/image/klDKLFvo5PSdMaW
    iorilu
        18
    iorilu  
       81 天前
    @stimw 主要是目前 python 圈公认这事没有统一, 公认的最佳方案

    每个人都不一样

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

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

    或者手动维护两个, 一个 dev 的, 一个 production 的
    zhusimaji
        19
    zhusimaji  
       80 天前 via iPhone
    @stimw 我现在在 win 下不捣鼓环境呢,都丢到 wsl 里面了,你说的问题没遇到过
    zhusimaji
        20
    zhusimaji  
       80 天前 via iPhone
    @stimw 看到 gcc 猜测跟 os 有关?你试试开个 docker 在 mac 下试试
    Alias4ck
        21
    Alias4ck  
       80 天前
    rye
    stimw
        22
    stimw  
    OP
       80 天前 via Android
    @Alias4ck 我看到官网介绍目前还是“very experimental”

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

    除此之外没有发现其他的优点,能不能跟 conda 合理共存要打个问号。目前 pdm 是可以的。
    Alias4ck
        23
    Alias4ck  
       80 天前
    @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
       79 天前
    @Alias4ck #23 有遇到坑吗?
    Alias4ck
        25
    Alias4ck  
       79 天前
    @stimw 写 c extension 的话可能会不方便,它用 hatch 打包的,暂时没碰到,有坑的话可以去提 issue,作者是 flask 的 creator
    stimw
        26
    stimw  
    OP
       73 天前 via Android
    @Alias4ck 用了几天感觉很好用。就是文档比 pdm 少了很多东西。
    Alias4ck
        27
    Alias4ck  
       71 天前
    @stimw wow,今天 rye 更新了新 feature 接入 uv( https://github.com/astral-sh/uv)(对就是那个写 ruff 的又写了一个比肩 pip 的) 卧槽这下载的速度比 pip 不是快一点点 我只能用丝滑来形容这安装依赖的速度
    stimw
        28
    stimw  
    OP
       71 天前
    @Alias4ck #27 我看了 discussion ,作者好像准备让 rye 合并到 uv 里。。。
    Alias4ck
        29
    Alias4ck  
       61 天前
    @stimw 并没有 但是 rye 已经成为 astral 维护的项目了 变成了公司维护了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2796 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:18 · PVG 20:18 · LAX 05:18 · JFK 08:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.