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 · 5188 次点击
    这是一个创建于 567 天前的主题,其中的信息可能已经有所发展或是发生改变。
    主要是包管理和版本管理工具的选择是怎样的

    我是在 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   ·   实用小工具   ·   2906 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:53 · PVG 11:53 · LAX 19:53 · JFK 22:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.