V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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
serge001
V2EX  ›  Python

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

  •  
  •   serge001 · Jan 3, 2018 · 21927 views
    This topic created in 3036 days ago, the information mentioned may be changed or developed.

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

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

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

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

    自己搞不定依赖怪 pip

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

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