V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

Python 的包管理感觉怎么这么不优雅。。。

  •  
  •   serge001 · 13 天前 · 6269 次点击

    本人前端一枚,习惯了 node 的 npm 之后感觉配置和使用起来都很简单方便,最近学习了一点 python 后,感觉 python 的包管理怎么这么不优雅。首先,配置文件居然是用 txt 文件来写的,二进制文件我用编辑器是无法打开的,然后用 git 也不能很好的版本管理;其次,pip install 是把包全都装在了全局,打开用户目录,一大堆以点开头的文件夹,抓狂。。。

    第 1 条附言  ·  13 天前
    更新:昨晚是我傻逼了,txt 文件是文本文件来的。因为之前 fork 了一个 python 项目,里面的包依赖管理文件是 requirements.txt ,我用编辑器 atom 打开不知道为什么提示说不能打开二进制文件,所以误以为 txt 文件是二进制文件,今天又试了一下发现可以了。。。所以 git 版本控制是没问题的,不过还是很不理解为啥用 txt 来写。非常感谢各位大大提出的各种解决方案,感谢感谢~
    119 回复  |  直到 2018-01-07 16:48:02 +08:00
    1  2  
        101
    rcteya76084   13 天前   ♥ 1
    你们不要吵了,PHP 是最好的语言
        102
    ipwx   13 天前
    @vwxyzjn 其实我也主要用 Python,不过可能我写的程序不是很业务,而且引入依赖也比较谨慎(小库基本上 copy-paste-modify-test,好处是自己的单元测试比较放心),所以没啥大问题。
        103
    kiwi95   12 天前
    互联网上一半的流量都在跑 npm install/update,能不优雅
        104
    forrestchang   12 天前
    Python 的导入机制确实不太优雅,但是包管理机制还是众多语言中比较好的。

    1. requirements.txt 只是文本文件,在 Linux 上后缀和文件是不是二进制无关,这样写只是约定俗成,你也可以写成别的;
    2. 正确的做法是一个项目用一个 virtualenv 来管理包,进行项目间的包隔离。
        105
    Owenjia   12 天前
    requirements.txt 还是只在开发中使用比较好,有分发需求的话依赖最好写 setup.py 里;
    pip 确实存在一些问题,比如处理依赖关系上,安装可能会需要手动使用系统包管理安装一些东西,卸载不能自动清理已经不被依赖的包(也许可以但我不知道)。
        106
    est   12 天前
    npm 的项目,放半年之后 npm update 一次保证跑不起来。
        107
    Sparetire   12 天前 via Android
    @est 那别说项目了,某些 linux 不都是这样。。
        108
    lightening   12 天前
    Python 的包管理机制确实不是最好的。不过你的吐槽都不在点上。
        109
    allenhu   12 天前 via Android
    Python 包好像是大小写乱用,看的很蛋疼
        110
    quinoa42   12 天前
    我常用 pyenv,尝试了一下 pipenv,确实很炫酷,但是感觉很不顺手…
    用 pipenv 的话 virtualenv 肯定要全交给 pipenv 管理,可是 pipenv 各种操作都是直接无视 pyenv,比如 pipenv install --system ***把 package 装到了我也不知道在哪的地方
    而且自带 flake 等等让我觉得 pipenv 有点做的太多了
    如果能有一款只包含 pipfile[.lock]管理的工具就好了,其他方面我觉得还是 pyenv 好用
    综上,滚回 pyenv 了:)
    如果有正确的 pyenv+pipenv 使用方式,请务必告诉我
        111
    yylucifer   12 天前
    你用的姿势不对。。
        112
    korvin   12 天前
    你要和 node 的 npm 像一点可以用 pipenv 可以区分 prod 和 dev 包
        113
    ryh   12 天前
    npm 昨天各种在莫名其妙的 hang, taobao 的 官方的 官方的+梯子 都这样😂
    感觉是墙的锅
        114
    ryh   12 天前
    补充下:yarn 也是如此
        115
    qgb   12 天前 via Android
    @kiwi95 233 这是黑吗
        116
    billion   12 天前
    Pipenv: Python Dev Workflow for Humans

    http://pipenv.readthedocs.io/en/latest/
        117
    lolizeppelin   12 天前 via Android
    瞎 bb openstack 那么大项目依赖都能写得清清楚楚

    自己搞不定依赖怪 pip

    再说了 linux 服务器上就该老老实实打包 rpm
    什么包管理都是 TM 是假的

    要么好好写依赖做 rpm 包 要么就和 Java 一样全部依赖包一个整的 部署的时候还 pip npm 早点死一边去
        118
    param   11 天前
    @lolizeppelin 部署我不觉得要打成 rpm,rpm 只保证兼容 red hat 系。我觉得在 Dockerfile 里写 pip 打包是 docker 镜像才是最佳实践。
        119
    est   10 天前
    1  2  
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2071 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 55ms · UTC 13:18 · PVG 21:18 · LAX 05:18 · JFK 08:18
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1