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

    我是在 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  
       350 天前
    咳咳 conda 自带 venv 的机制:`conda create`
    ispinfx
        2
    ispinfx  
       350 天前
    poetry / pdm
    Macv1994
        3
    Macv1994  
       350 天前   ❤️ 2
    python -m venv venv
    Carson089
        4
    Carson089  
       350 天前
    算法的最佳实践是 anaconda/miniconda 的 python 版本 与 docker
    Alias4ck
        5
    Alias4ck  
       350 天前
    包管理工具可太多了 最近还有个 rye( https://github.com/mitsuhiko/rye)
    NoOneNoBody
        6
    NoOneNoBody  
       350 天前   ❤️ 1
    应该是环境管理,不叫版本管理吧
    用其中之一就行,混用自然混乱

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

    conda 比 pyenv 好..
    declandragon
        12
    declandragon  
       350 天前
    用三楼的方式 python -m venv venv
    hertzry
        13
    hertzry  
       350 天前
    无需安装 python ,直接 miniconda 走起,一个项目开一个虚拟环境,默认 base 环境不动。

    conda create -n your_env_name
    conda activate your_env_name
    conda install package_name
    bigjack
        14
    bigjack  
       350 天前
    virtualenv
    evemoo
        15
    evemoo  
       350 天前
    virtualenv +1
    不过迁移的时候要确保两边环境的默认 Python 版本一致
    iorilu
        16
    iorilu  
       350 天前 via Android
    别折腾了, 随便那个平台,用 miniconda 就行
    jaredyam
        17
    jaredyam  
       350 天前
    miniconda 够用了
    paopjian
        18
    paopjian  
       350 天前
    conda/miniconda 好用的地方是可以指定 python 版本,venv 的好处是库比较纯净.
    alne
        19
    alne  
       350 天前
    conda 吧,机器学习一堆二进制包用 conda 不至于搞乱系统环境
    Wataru
        20
    Wataru  
       350 天前
    conda 好点,一个东西一个环境,不会搞乱
    doraemon0711
        21
    doraemon0711  
    OP
       350 天前
    谢谢,准备试试 miniconda ,再问个问题,如果不动 base 环境,但想加一些全局的命令(例如 tldr)该怎么做
    apake
        22
    apake  
       350 天前
    版本管理 miniconda/pyenv + 包管理 pip/poetry/pdm. 搞机器学习一般用 conda
    Ricardoo
        23
    Ricardoo  
       350 天前   ❤️ 1
    @doraemon0711 #21 激活的环境会继承全局命令的,不用担心。它实际是填加新环境的 bin 目录到 PATH 中,拿{conda_install_home}/envs/{env_name}/bin 里的命令覆盖掉全局同名命令,非同名命令在各个 conda 环境里都可以使用
    SenLief
        24
    SenLief  
       350 天前 via iPhone
    我自己使用 miniconda 和 venv 的,conda 管理版本,venv 创建环境。
    whitewinds
        25
    whitewinds  
       350 天前
    miniconda 管理虚拟环境
    pip-compile 管理包
    zengxs
        26
    zengxs  
       350 天前
    需要预编译的依赖就用 conda
    最求新 python 版本就 pyenv
    cherbim
        27
    cherbim  
       350 天前
    个人建议,无脑选择 conda 吧
    wizardyhnr
        28
    wizardyhnr  
       349 天前
    不要用 conda 了,以前 pip 编译麻烦的时候 conda 的编译包很方便。但现在 pip 支持 wheel 很久了,用 pip 安装的 numpy/scipy/pytorch 都是编译好的,想想 pytorch 用的是 CUDA 的接口,pip 也可以一行命令安装了。conda 占内存大,安装包检查时间长,channel 里面一些小众包也没有,最后都是 conda/pip 混用。pyenv 也是可以创建多个环境的。
    wizardyhnr
        29
    wizardyhnr  
       349 天前
    主流操作系统现在都支持安装不同版本的 Python 了,你用不同版本的 pyenv 就可以创建不同版本号的环境了。
    amlee
        30
    amlee  
       349 天前
    @doraemon0711 有一个 pipx ,可以将 python 的命令行软件添加到全局 path ,又不影响 base 环境,很好用
    ShihanW
        31
    ShihanW  
       349 天前
    没用过 conda ,一直用的 pipenv 管理环境
    gumupaier
        32
    gumupaier  
       349 天前
    建议无脑选择 conda
    Oilybear
        33
    Oilybear  
       349 天前
    1. conda env 、pyenv 都是环境管理,允许多个 python 环境,pip 和 conda install 是单个环境中的第三方库 /包管理。
    2. 现在的优劣就像楼上#28 说的,剩下的就看你个人选择了。
    3. 至于楼上那个#13 说的无需安装 python 的,什么叫无需安装?安装无非不就是在你磁盘留下相关文件,环境变量加上可执行文件的所在目录让 OS 能找得到可以用上? conda create -n fuxkurtalk python=3.x 不下载对应的 python ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2880 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:51 · PVG 21:51 · LAX 06:51 · JFK 09:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.