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

Pipenv: Yarn + Pyenv 的组合, requests 作者的新作

  •  
  •   Gem · 2017-01-23 14:05:05 +08:00 · 3954 次点击
    这是一个创建于 2642 天前的主题,其中的信息可能已经有所发展或是发生改变。
    终于等来了这个工具,不用羡慕 node 里的 Yarn 了,也不必嫌 Pyenv 的单薄了。这个东西不用多介绍了,想必大家都懂的。
    https://github.com/kennethreitz/pipenv
    21 条回复    2017-01-24 22:16:00 +08:00
    sudoz
        1
    sudoz  
       2017-01-23 14:37:33 +08:00
    真大神
    jason0916
        2
    jason0916  
       2017-01-23 16:02:09 +08:00
    因为一直在关注他,也看到了这个项目,其实不是很明白特意写一个包的好处,楼主能帮忙介绍下嘛 0- 0 ?
    gotounix
        3
    gotounix  
       2017-01-23 16:04:23 +08:00   ❤️ 1
    这哥们的代码写的真漂亮,值得每一个 Python 开发者学习啊。
    NSDont
        4
    NSDont  
       2017-01-23 16:23:54 +08:00
    @jason0916 我觉得主要是那个 Pipfile.lock 文件,保留了你开发环境下面所有的 package 的版本 https://github.com/kennethreitz/pipenv/blob/master/Pipfile.lock
    upczww
        5
    upczww  
       2017-01-23 16:34:21 +08:00 via iPhone
    好东西,可以少敲好多代码
    yongzhong
        6
    yongzhong  
       2017-01-23 16:35:30 +08:00
    大神有个 organization 叫 the white house
    jason0916
        7
    jason0916  
       2017-01-23 17:20:26 +08:00
    @NSDont requirements.txt 也可以指定版本啊 0- 0 ,有别的嘛?
    lalalakakaka
        8
    lalalakakaka  
       2017-01-23 18:18:06 +08:00
    虽然只是把 virtualenv 和 pip 的命令合二为一了。。。

    但是想想真的会很好用啊
    bdbai
        9
    bdbai  
       2017-01-23 19:26:46 +08:00 via Android
    @jason0916 lock 精确保留每个库的版本,不更新依赖版本就不会变,避免各种不兼容问题。
    66450146
        10
    66450146  
       2017-01-23 20:12:28 +08:00 via iPhone
    @jason0916 很多包管理现在的做法是,在指定需要什么包的时候不用指定版本,第一次安装的时候进行依赖解析并生成 .lock 文件保存准确版本,这样在其他环境下安装的时候会直接到 .lock 文件里面找到每个包的准确版本来安装,同时不会给开发人员带来版本管理的负担
    hugo775128583
        11
    hugo775128583  
       2017-01-23 20:35:25 +08:00 via Android
    平时使用 conda 做虚拟环境,不知道这位大神的工具和 conda 的区别和优势在哪里?目前用 conda 还没有觉得有蹩脚的地方。
    jason0916
        12
    jason0916  
       2017-01-23 20:48:37 +08:00
    @66450146 哦哦这样子,谢谢科普~
    jason0916
        13
    jason0916  
       2017-01-23 20:48:51 +08:00
    @bdbai 嗯嗯,谢谢科普
    fxxkgw
        14
    fxxkgw  
       2017-01-23 21:07:41 +08:00
    敢不敢好好靠脸吃饭啊 =。=
    congeec
        15
    congeec  
       2017-01-23 21:23:06 +08:00 via iPhone
    Python 也需要一个这样的东西了。 bundle, cargo 类似
    aec4d
        16
    aec4d  
       2017-01-23 22:13:19 +08:00
    初略看了下,虽然名字都有 env ,可是这个库和 pyenv 是没有一毛钱关系的,也没有整合
    aec4d
        17
    aec4d  
       2017-01-23 22:25:05 +08:00
    另外 pyenv+virtualenv 的组合基本没有太大毛病。 pipfile 文件解决在 dev 和 prod 多个环境中安装包略有不同,并没有很惊艳的效果,总结来说现在已有的方案能解决问题。这个库只是想让做的方法更好一点点而已
    Gem
        18
    Gem  
    OP
       2017-01-23 22:26:09 +08:00
    @aec4d 应该是目前还不完善, pipenv --two/three 这个参数目前不起作用,可能也是我的使用方法不对。
    lightening
        19
    lightening  
       2017-01-24 17:49:44 +08:00   ❤️ 3
    @jason0916 插件管理有两个作用,一个是说明需要装的插件,一个是解决依赖并锁定插件版本。
    传统上的 requirements.txt 兼具了这两个作用。但是有一个问题,依赖关系和版本锁定非常复杂,手写的话不仅非常麻烦,而且很容易出错。所以有 pip freeze 功能。但是 pip freeze 功能又有一个问题,就是他把系统上所有安装的包都给 freeze 下来了:有些是你其他 project 的包,有些是你临时装了 debug 用的、或者是一些命令行小工具,你不想放进 repository 的。

    Virtualenv 是一个解决方法。至少其他 project 的包不会进来了。但是这样的话,不同 project 需要安装好几次一样的包,浪费空间。另外,临时的 debug 工具这种情况,还是会被 freeze 下来。


    以 Ruby 的 Bundler 为代表,把“说明需要装的插件”功能和“解决依赖并锁定插件版本”功能分开了。分为 Gemfile 和 Gemfile.lock. 前者格式非常简单,并且可以方便的指定人为限定的附加信息如:我需要 Rails 这个包,> 4.0 版本。这个文件手动编辑。另一个 lock 文件,是自动生成的,比如精确到 Rails 4.2.1 版本。在第一次 bundle install 时,系统把能够满足依赖关系的精确版本记录在 lock 文件里,其他开发者使用、部署的时候就会用完全一模一样的版本,避免莫名其妙的问题。

    同时,同一台机器上即使有多个 project ,也不需要把同一个包装好几遍了。 Ruby 的 bundler 在使用时,可以在系统内多个版本的同一个包中,只读取 lock 文件制定的精确版本。甚至可以 Bundle.require 一次性 load 所有包。
    jason0916
        20
    jason0916  
       2017-01-24 19:55:37 +08:00
    @lightening 谢谢科普,终于有点明白优势在哪里了,谢谢谢谢
    sunwei0325
        21
    sunwei0325  
       2017-01-24 22:16:00 +08:00
    膜拜大神的 Github, 顺便看看他写的 Python guide, 大神!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2926 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:10 · PVG 23:10 · LAX 08:10 · JFK 11:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.