首页   注册   登录
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 · 264 天前 · 9185 次点击
    这是一个创建于 264 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    自己搞不定依赖怪 pip

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

    要么好好写依赖做 rpm 包 要么就和 Java 一样全部依赖包一个整的 部署的时候还 pip npm 早点死一边去
        118
    param   262 天前
    @lolizeppelin 部署我不觉得要打成 rpm,rpm 只保证兼容 red hat 系。我觉得在 Dockerfile 里写 pip 打包是 docker 镜像才是最佳实践。
        119
    est   261 天前
        120
    cjc91   245 天前
    有一对情侣,男的非常懦弱,做什么事情之前都让女友先试。女友对此十分不满。 一次,两人出海,返航时,飓风将小艇摧毁,幸亏女友抓住了一块木板才保住了两人的性命。女友问男友:你怕吗?男友从怀中掏出一把水果刀,说:怕,但有鲨鱼来,我就用这个对付它。女友只是摇头苦笑。 不久,一艘货轮发现了他们,正当他们欣喜若狂时,一群鲨鱼出现了,女友大叫:我们一起用力游,会没事的!男友却突然用力将女友推进海里,扒着木板朝货轮了,并喊道:这次我先试!女友惊呆了,望着男友的背影,感到非常绝望。鲨鱼正在靠近,可对女友不感兴趣而径直向男友游去,男友被鲨鱼凶猛地撕咬着,他发疯似地冲女友喊道:我爱你! 女友获救了,甲板上的人都在默哀,船长坐到女友身边说:小姐,他是我见过最勇敢的人。我们为他祈祷!不,他是个胆小鬼。女友冷冷地说。 您怎么这样说呢?刚才我一直用望远镜观察你们,我清楚地看到他把你推开后用刀子割破了自己的手腕。鲨鱼对血腥味很敏感,如果他不这样做来争取时间,恐怕你永远不会出现在这艘船上。什么?女友听到真相如同晴天霹雳,她悲痛欲绝,伤心无比,只想立刻跳进海里和男友死在一起。关键时刻船长拉住了她:如果我是你,一定会好好的活下去,并用挖掘机把这条大海填平,为你的男朋友报仇血恨。女友沉默数秒,冷静的问:挖掘机技术哪家强。船长:中国山东找蓝翔。
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2140 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 26ms · UTC 14:36 · PVG 22:36 · LAX 07:36 · JFK 10:36
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1