最近在用 Python ,有些混乱请教一下大家 - V2EX
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
doraemon0711
V2EX    Python

最近在用 Python ,有些混乱请教一下大家

  •  
  •   doraemon0711 2023-05-05 12:05:03 +08:00 5863 次点击
    这是一个创建于 895 天前的主题,其中的信息可能已经有所发展或是发生改变。
    主要是包管理和版本管理工具的选择是怎样的

    我是在 wsl 上运行,现在是想跑一些机器学习的项目,之后可能也会自己开发一些小工具或爬虫; 平时我都是用 pyenv 配合 pip 来使用 python ,在接触机器学习时听说安装 conda 更好一些
    我的理解是 pyenv 用来管理版本,conda 替代 pip 用来管理包,但我实际操作了一下发现可以在 pyenv 中安装 conda(conda 被当作了一种 python 版本),再在 conda 中不同虚拟环境下安装不同版本的 python ,感觉变成了一个套娃...所以现在用 python 的最佳实践方式是怎样的?
    33 条回复    2023-05-06 14:51:11 +08:00
    MetroWind
        1
    MetroWind  
       2023-05-05 12:08:14 +08:00
    咳咳 conda 自带 venv 的机制:`conda create`
    ispinfx
        2
    ispinfx  
       2023-05-05 12:26:47 +08:00
    poetry / pdm
    Macv1994
        3
    Macv1994  
       2023-05-05 12:31:34 +08:00   2
    python -m venv venv
    Carson089
        4
    Carson089  
       2023-05-05 12:35:36 +08:00
    算法的最佳实践是 anaconda/miniconda 的 python 版本 与 docker
    Alias4ck
        5
    Alias4ck  
       2023-05-05 12:38:35 +08:00
    包管理工具可太多了 最近还有个 rye( https://github.com/mitsuhiko/rye)
    NoOneNoBody
        6
    NoOneNoBody  
       2023-05-05 12:56:31 +08:00   1
    应该是环境管理,不叫版本管理吧
    用其中之一就行,混用自然混乱

    conda 在 windows 中的优势是,有些需要编译的包,设计者当初是没有考虑 windows 的,所以在 windows pip 编译安装会出现奇奇怪怪的问题,安装失败;其中部分,conda 做了预编译,装起来就比较顺
    dayeye2006199
        7
    dayeye2006199  
       2023-05-05 13:11:49 +08:00 via Android
    用了 conda 就不用 pyenv 了。
    conda 可以管理 py 版本和环境。
    hb751968840
        8
    hb751968840  
       2023-05-05 13:22:56 +08:00
    pyenv 机器学习踩了一个坑,不推荐,安装 torch 特定版本没办法使用-f https://download.pytorch.org/whl/torch_stable.html
    ykk
        9
    ykk  
       2023-05-05 13:48:43 +08:00
    用 conda ,四年算法没用过 pyenv
    craiiz
        10
    craiiz  
       2023-05-05 14:26:23 +08:00
    之前一直有 pyven, 后来有一次 pip 安装 triton 一直失败,conda 安装 一次成功之后就转 conda 了
    BBCCBB
        11
    BBCCBB  
       2023-05-05 14:28:46 +08:00
    直接用 miniconda, 管理 python 多个环境, 安装你可以全部 pip, 也可以全部 conda, 也可以 poetry 这种..

    conda 比 pyenv 好..
    declandragon
        12
    declandragon  
       2023-05-05 14:51:07 +08:00
    用三楼的方式 python -m venv venv
    hertzry
        13
    hertzry  
       2023-05-05 15:11:46 +08:00
    无需安装 python ,直接 miniconda 走起,一个项目开一个虚拟环境,默认 base 环境不动。

    conda create -n your_env_name
    conda activate your_env_name
    conda install package_name
    bigjack
        14
    bigjack  
       2023-05-05 15:13:39 +08:00
    virtualenv
    evemoo
        15
    evemoo  
       2023-05-05 15:26:42 +08:00
    virtualenv +1
    不过迁移的时候要确保两边环境的默认 Python 版本一致
    iorilu
        16
    iorilu  
       2023-05-05 15:57:34 +08:00 via Android
    别折腾了, 随便那个平台,用 miniconda 就行
    jaredyam
        17
    jaredyam  
       2023-05-05 16:13:28 +08:00
    miniconda 够用了
    paopjian
        18
    paopjian  
       2023-05-05 16:47:03 +08:00
    conda/miniconda 好用的地方是可以指定 python 版本,venv 的好处是库比较纯净.
    alne
        19
    alne  
       2023-05-05 17:02:51 +08:00
    conda 吧,机器学习一堆二进制包用 conda 不至于搞乱系统环境
    Wataru
        20
    Wataru  
       2023-05-05 17:11:19 +08:00
    conda 好点,一个东西一个环境,不会搞乱
    doraemon0711
        21
    doraemon0711  
    OP
       2023-05-05 19:06:26 +08:00
    谢谢,准备试试 miniconda ,再问个问题,如果不动 base 环境,但想加一些全局的命令(例如 tldr)该怎么做
    apake
        22
    apake  
       2023-05-05 19:15:58 +08:00
    版本管理 miniconda/pyenv + 包管理 pip/poetry/pdm. 搞机器学习一般用 conda
    Ricardoo
        23
    Ricardoo  
       2023-05-05 19:17:40 +08:00   1
    @doraemon0711 #21 激活的环境会继承全局命令的,不用担心。它实际是填加新环境的 bin 目录到 PATH 中,拿{conda_install_home}/envs/{env_name}/bin 里的命令覆盖掉全局同名命令,非同名命令在各个 conda 环境里都可以使用
    SenLief
        24
    SenLief  
       2023-05-05 19:49:21 +08:00 via iPhone
    我自己使用 miniconda 和 venv 的,conda 管理版本,venv 创建环境。
    whitewinds
        25
    whitewinds  
       2023-05-05 20:28:02 +08:00
    miniconda 管理虚拟环境
    pip-compile 管理包
    zengxs
        26
    zengxs  
       2023-05-05 21:11:30 +08:00
    需要预译的依赖就用 conda
    最求新 python 版本就 pyenv
    cherbim
        27
    cherbim  
       2023-05-05 21:31:19 +08:00
    个人建议,无脑选择 conda 吧
    wizardyhnr
        28
    wizardyhnr  
       2023-05-05 22:44:12 +08:00
    不要用 conda 了,以前 pip 编译麻烦的时候 conda 的编译包很方便。但现在 pip 支持 wheel 很久了,用 pip 安装的 numpy/scipy/pytorch 都是编译好的,想想 pytorch 用的是 CUDA 的接口,pip 也可以一行命令安装了。conda 占内存大,安装包检查时间长,channel 里面一些小众包也没有,最后都是 conda/pip 混用。pyenv 也是可以创建多个环境的。
    wizardyhnr
        29
    wizardyhnr  
       2023-05-05 22:46:09 +08:00
    主流操作系统现在都支持安装不同版本的 Python 了,你用不同版本的 pyenv 就可以创建不同版本号的环境了。
    amlee
        30
    amlee  
       2023-05-05 22:46:34 +08:00
    @doraemon0711 有一个 pipx ,可以将 python 的命令行软件添加到全局 path ,又不影响 base 环境,很好用
    qYs9wxnXG96c6z1t
        31
    qYs9wxnXG96c6z1t  
       2023-05-05 23:32:14 +08:00
    没用过 conda ,一直用的 pipenv 管理环境
    gumupaier
        32
    gumupaier  
       2023-05-06 11:27:04 +08:00
    建议无脑选择 conda
    Oilybear
        33
    Oilybear  
       2023-05-06 14:51:11 +08:00
    1. conda env 、pyenv 都是环境管理,允许多个 python 环境,pip 和 conda install 是单个环境中的第三方库 /包管理。
    2. 现在的优劣就像楼上#28 说的,剩下的就看你个人选择了。
    3. 至于楼上那个#13 说的无需安装 python 的,什么叫无需安装?安装无非不就是在你磁盘留下相关文件,环境变量加上可执行文件的所在目录让 OS 能找得到可以用上? conda create -n fuxkurtalk python=3.x 不下载对应的 python ?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5420 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:20 PVG 09:20 LAX 18:20 JFK 21:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86