之前用到 python 的地方基本就是数据分析、深度学习,这块标准答案应该就是 conda ,我一直以来也是用 miniconda 来管理环境。
现在要写 fastapi ,conda 用起来就有点痛苦了。当然 conda 也可以导出evironment.yml
,但是这玩意似乎也只能用来 create 新环境,不能像其他包管理器一样根据包版本差异直接 install 。
研究了一下现在比较好用的就是 pdm ,可以创建新的 venv (不太想搞这么多 venv...),也可以复用 conda 的 venv ,但是看了半天复用的话也不知道会不会影响 conda 的环境里的包。
还有一个选择就是 vscode 的 dev container ,直接容器内开发可能是一个比较好的选择,但是没尝试过。
1
FlytoSirius 316 天前
上 Dev Container 可能是你的最终方案吧
行业里也都是这么做的. 否则一个操作系统环境 终归容易出问题 |
2
Yuhyeong 316 天前
哥们讲讲 fastapi 在 conda 里怎么个情况,我自己用着没啥问题啊
|
3
youngce 316 天前
我们这边无论是开发的时候用什么管理( conda 、venv 、poetry 、pyenv 、pdm...),最终打 dockerfile 必须提供 requirement.txt🤣 其实对于 pycharm 用户 conda 、venv 、poetry 的支持都很好了
|
4
stimw OP @Yuhyeong 我的,我刚发现可以 conda env update --file environment.yml 。但是 conda 也有点问题,很多包在 conda 里没有,虽然也可以用 conda 里的 pip 装,但是来回倒腾总是会遇到一些莫名其妙的问题,要么就是 conda 卡在检查环境了。
|
5
lxdlam 316 天前
目前主用 rye ,只能说非常舒服
|
7
zhusimaji 316 天前
开发 vscode +wsl2+miniconda ,线上 docker 指定 pip 安装,少的话直接写在 docker file 里,多的话还是放 requirement.txt ,目前用的很稳
|
8
lidashuang 316 天前
我用 pdm
|
9
dayeye2006199 316 天前 via Android
我选择老掉牙的 venv 和 pip
|
10
RockShake 316 天前 via Android
如果只是包管理,poetry pipenv pdm 都没什么问题,IDE 对虚拟环境已经非常完善,只有之前用 pdm 的时候需要自己配置一下路径。
|
11
dup2graph 316 天前
感觉开发 fastapi ,用 dev container 有点重?
感觉 pyenv, venv, pdm 都没啥问题 |
12
lostsquirrelX 316 天前
不想太多 venv 就不给你推荐 pipenv 了
|
13
iorilu 316 天前 1
切勿在这些无聊的事情上花很多时间
就用最熟悉的就行 太多选择也是 python 的问题 |
14
shimada666 316 天前
我选择老掉牙的 venv 和 pip + 1
|
15
noparking188 315 天前
virtualenv + pip + pycharm
|
16
stimw OP @iorilu 不是无聊。。是 conda 在这种事上真的难用。。
比如我刚在 linux 上 `conda env export` 出 environment.yml ,回 mac 上`conda env update`就报错了。。 https://smms.app/image/klDKLFvo5PSdMaW |
17
stimw OP @zhusimaji 这种问题有遇到吗?刚在 linux 上 `conda env export` 出 environment.yml ,回 mac 上`mamba env update`就报错。channel 都是 conda-forge 。我是真受不了了。。
https://smms.app/image/klDKLFvo5PSdMaW |
18
iorilu 315 天前
@stimw 主要是目前 python 圈公认这事没有统一, 公认的最佳方案
每个人都不一样 那自然是你熟悉那个就那个 我个人仍然就用最简单的 venv + requirement , 至于多装几个包, 我也无所谓 或者手动维护两个, 一个 dev 的, 一个 production 的 |
21
Alias4ck 315 天前
rye
|
22
stimw OP @Alias4ck 我看到官网介绍目前还是“very experimental”
它相比 pdm 的优点是什么?我看文档提到的一个是用户可以通过 rye 安装 python 发行版,而 pdm 创建 virtualenv 需要系统已经安装对应的 python 版本。 除此之外没有发现其他的优点,能不能跟 conda 合理共存要打个问号。目前 pdm 是可以的。 |
23
Alias4ck 314 天前
@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/ |
25
Alias4ck 314 天前
@stimw 写 c extension 的话可能会不方便,它用 hatch 打包的,暂时没碰到,有坑的话可以去提 issue,作者是 flask 的 creator
|
27
Alias4ck 306 天前
@stimw wow,今天 rye 更新了新 feature 接入 uv( https://github.com/astral-sh/uv)(对就是那个写 ruff 的又写了一个比肩 pip 的) 卧槽这下载的速度比 pip 不是快一点点 我只能用丝滑来形容这安装依赖的速度
|