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
maichael
V2EX  ›  Python

Python 现在最好用的包管理是啥?

  •  
  •   maichael · 2020-09-10 15:10:53 +08:00 · 8495 次点击
    这是一个创建于 1534 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近为了给测试搭自动化测试,重新开始搞起 Python,但是整体工程结构比较苦恼。

    重点是版本管理,requirements.txt 感觉不怎么好用。Pipenv? Tox? 还是其它的啥?

    以及像 package.json 里 scripts 的用法,python 有类似的吗?

    46 条回复    2020-09-13 14:19:44 +08:00
    cdyrhh
        1
    cdyrhh  
       2020-09-10 15:11:30 +08:00   ❤️ 1
    poetry
    dddd1007
        2
    dddd1007  
       2020-09-10 15:24:05 +08:00
    poetry +1
    shunconf
        3
    shunconf  
       2020-09-10 15:28:15 +08:00
    @dddd1007
    @cdyrhh poetry 我感觉好难用啊,依赖包都不能指定存放得位置
    Trim21
        4
    Trim21  
       2020-09-10 15:29:55 +08:00
    @shunconf #3 什么叫指定依赖包的存放位置...你是说安装完依赖之后的 site-packages 的位置吗
    Trim21
        5
    Trim21  
       2020-09-10 15:32:04 +08:00
    poetry 应该是目前为止 python 中最像 npm 的包管理器了。

    你可以先创建虚拟环境然后再虚拟环境里 poetry install,所有的包就会安到虚拟环境里面了。

    等价于 npm 的 scripts 的用法目前还没有,但是在计划中了
    laike9m
        6
    laike9m  
       2020-09-10 16:13:38 +08:00 via Android   ❤️ 2
    感觉你先要先了解一下包管理的概念。像你提到的 Tox,和包管理压根就没一毛钱关系。我个人反正都是 Poetry 一把梭。

    可以听一下我们的这期节目,捕蛇者说
    Ep 15. 和 PyPA 的成员聊聊 Python 开发工作流
    https://www.pythonhunter.org/episodes/ep15

    这期中文 Python 圈子里最懂 packaging 的两个人我们都请到了,讨论了各种常用方案包括 pipenv 和 poetey
    laike9m
        7
    laike9m  
       2020-09-10 16:15:20 +08:00 via Android
    @Trim21 我甚至觉得 poetry 应该把它自己的 virtual env 功能去掉
    watanuki
        8
    watanuki  
       2020-09-10 16:28:03 +08:00   ❤️ 1
    我 python 用的不多,也很长时间没用 python 了,我对 python 包管理的认识还停留在 pip install 和 conda install,anaconda 还算好用?
    0bit
        9
    0bit  
       2020-09-10 16:29:51 +08:00
    poetry + 1
    TimePPT
        10
    TimePPT  
       2020-09-10 16:39:23 +08:00
    看来 pipenv 把大家坑的都没人提了😂
    chenqh
        11
    chenqh  
       2020-09-10 16:42:23 +08:00
    我只会 pip install
    0bit
        12
    0bit  
       2020-09-10 16:43:05 +08:00
    @TimePPT pipenv 早早的就被内定,然后就不思进取了,伤心了
    arischow
        13
    arischow  
       2020-09-10 16:44:48 +08:00 via iPhone
    poetry 可以配置不要创建虚拟环境,然后用自己指定的虚拟环境作为包的安装位置。
    fhsan
        14
    fhsan  
       2020-09-10 16:49:15 +08:00
    我不信
    pipenv 2018.11.26 2020.8.13
    cominghome
        15
    cominghome  
       2020-09-10 17:01:14 +08:00
    懒得整别的,一直都是 pip 一把梭,倒是没遇到过什么大问题
    Hstar
        16
    Hstar  
       2020-09-10 17:01:58 +08:00
    pipenv 已经没人用了吗,我觉得蛮好用的
    hahajing2019
        17
    hahajing2019  
       2020-09-10 18:00:29 +08:00
    miniconda
    hyperbin
        18
    hyperbin  
       2020-09-10 18:04:53 +08:00 via Android
    就我一个在用 pip 吗
    renmu123
        19
    renmu123  
       2020-09-10 18:29:45 +08:00 via Android
    @shunconf 现在已经支持了,也支持在当前项目内创建 venv 了
    Ricardoo
        20
    Ricardoo  
       2020-09-10 19:48:14 +08:00
    为什么都没人说 conda ?我用 anaconda 和 miniconda
    lithiumii
        21
    lithiumii  
       2020-09-10 19:54:49 +08:00   ❤️ 1
    我也是 conda,平常用 miniconda,树莓派用 miniforge
    看来要学学 poetry
    wizardoz
        22
    wizardoz  
       2020-09-10 19:55:36 +08:00
    哪个最好用不知道,一直用 pip,够用,懒得去折腾新的
    clemente0620
        23
    clemente0620  
       2020-09-10 19:59:14 +08:00
    miniconda
    rglee
        24
    rglee  
       2020-09-10 20:18:21 +08:00 via Android
    我只用 pip 和 conda,这是跟不上主流了吗?
    l1xnan
        25
    l1xnan  
       2020-09-10 22:17:13 +08:00 via Android
    数据分析项目 conda,日常脚本 pip,Python 包开发 poetry,部署 docker,pipenv 半残坑货
    freakxx
        26
    freakxx  
       2020-09-10 22:38:09 +08:00   ❤️ 1
    pipenv 有挺多问题,但还是很好用

    poetry 试用过一段时间,感觉还是不太习惯,感觉不太对味。
    yucongo
        27
    yucongo  
       2020-09-10 23:07:06 +08:00
    超超赞 poetry,建议初学时花时间看完 poetry 主页的文档。用一阵后再看一次。
    hhbcarl
        28
    hhbcarl  
       2020-09-11 00:54:14 +08:00
    感觉其他的包管理工具太重了,加了好多新概念,不够「原生」,我用 pip-tools 足够了。
    CareiOS
        29
    CareiOS  
       2020-09-11 09:49:55 +08:00
    miniconda+1
    sharpy
        30
    sharpy  
       2020-09-11 10:15:34 +08:00
    miniconda+1
    sylvos
        31
    sylvos  
       2020-09-11 11:49:46 +08:00 via iPhone
    miniconda
    dayeye2006199
        32
    dayeye2006199  
       2020-09-11 12:41:54 +08:00
    Miniconda pip,docker base 镜像打开就能用
    IgniteWhite
        33
    IgniteWhite  
       2020-09-11 15:07:35 +08:00 via iPhone
    @lithiumii 我树莓派也用 miniforge !感觉 solving environment 好快
    kkbblzq
        34
    kkbblzq  
       2020-09-11 16:19:24 +08:00
    poetry + 1
    之前用 pipenv,依赖多了以后问题很多,而且差不多 2 年没有人维护(最近终于继续维护了),所以换了 poetry,目前用下来基本满足需求
    lostpg
        35
    lostpg  
       2020-09-11 18:26:34 +08:00
    Poetry 吧,conda 更像是全局的虚拟环境管理,poetry 更像是 npm,cargo 那样的项目的环境和包管理。
    sayhi
        36
    sayhi  
       2020-09-12 00:10:55 +08:00 via Android
    miniconda
    Pho3nix
        37
    Pho3nix  
       2020-09-12 09:51:50 +08:00
    conda 有些时候版本冲突很难受,poetry 有解决么?
    Trim21
        38
    Trim21  
       2020-09-12 20:10:42 +08:00 via iPhone
    @laike9m 我现在是在.venv 建一个虚拟环境假装 node_modules…
    Trim21
        39
    Trim21  
       2020-09-12 20:11:50 +08:00 via iPhone
    @Pho3nix poetry 会保证所有的包之间没有依赖冲突
    laike9m
        40
    laike9m  
       2020-09-13 01:53:07 +08:00 via Android
    @Trim21 “在 venv 建虚拟环境”是指? venv 本来不就是用来建虚拟环境的么
    610915518
        41
    610915518  
       2020-09-13 08:11:34 +08:00 via iPhone
    pip install -r requirements.txt
    yzc27
        42
    yzc27  
       2020-09-13 10:36:39 +08:00
    以前 pyenv + pipenv,现在 pyenv + poetry
    Trim21
        43
    Trim21  
       2020-09-13 11:43:42 +08:00 via iPhone
    @laike9m 是在项目根目录 python -m venv .venv …

    poetry 就不会在他的 cache 文件夹里再自己建一个虚拟环境,而是用.venv 里面的虚拟环境了
    ghostviper
        44
    ghostviper  
       2020-09-13 12:17:22 +08:00
    python 版本管理 用 pyenv ;虚拟工程环境管理用 pyenv-virtualenv ;包管理用 pip (记得把源都改成国内,安装 python 的方式用代理先下载指定的压缩包放到~/.pyenv/cache 下 pyenv install XXX )
    generated
        45
    generated  
       2020-09-13 13:02:28 +08:00
    python 的包管理真的是太混乱了,
    laike9m
        46
    laike9m  
       2020-09-13 14:19:44 +08:00 via Android
    @Trim21 对 poetey 会自动检测
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1718 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:40 · PVG 00:40 · LAX 08:40 · JFK 11:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.