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

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

  •  
  •   Gem · Jan 23, 2017 · 4475 views
    This topic created in 3382 days ago, the information mentioned may be changed or developed.
    终于等来了这个工具,不用羡慕 node 里的 Yarn 了,也不必嫌 Pyenv 的单薄了。这个东西不用多介绍了,想必大家都懂的。
    https://github.com/kennethreitz/pipenv
    21 replies    2017-01-24 22:16:00 +08:00
    sudoz
        1
    sudoz  
       Jan 23, 2017
    真大神
    JhZ7z587cYROBgVQ
        2
    JhZ7z587cYROBgVQ  
       Jan 23, 2017
    因为一直在关注他,也看到了这个项目,其实不是很明白特意写一个包的好处,楼主能帮忙介绍下嘛 0- 0 ?
    gotounix
        3
    gotounix  
       Jan 23, 2017   ❤️ 1
    这哥们的代码写的真漂亮,值得每一个 Python 开发者学习啊。
    NLight
        4
    NLight  
       Jan 23, 2017
    @jason0916 我觉得主要是那个 Pipfile.lock 文件,保留了你开发环境下面所有的 package 的版本 https://github.com/kennethreitz/pipenv/blob/master/Pipfile.lock
    upczww
        5
    upczww  
       Jan 23, 2017 via iPhone
    好东西,可以少敲好多代码
    yongzhong
        6
    yongzhong  
       Jan 23, 2017
    大神有个 organization 叫 the white house
    JhZ7z587cYROBgVQ
        7
    JhZ7z587cYROBgVQ  
       Jan 23, 2017
    @NSDont requirements.txt 也可以指定版本啊 0- 0 ,有别的嘛?
    lalalakakaka
        8
    lalalakakaka  
       Jan 23, 2017
    虽然只是把 virtualenv 和 pip 的命令合二为一了。。。

    但是想想真的会很好用啊
    bdbai
        9
    bdbai  
       Jan 23, 2017 via Android
    @jason0916 lock 精确保留每个库的版本,不更新依赖版本就不会变,避免各种不兼容问题。
    66450146
        10
    66450146  
       Jan 23, 2017 via iPhone
    @jason0916 很多包管理现在的做法是,在指定需要什么包的时候不用指定版本,第一次安装的时候进行依赖解析并生成 .lock 文件保存准确版本,这样在其他环境下安装的时候会直接到 .lock 文件里面找到每个包的准确版本来安装,同时不会给开发人员带来版本管理的负担
    hugo775128583
        11
    hugo775128583  
       Jan 23, 2017 via Android
    平时使用 conda 做虚拟环境,不知道这位大神的工具和 conda 的区别和优势在哪里?目前用 conda 还没有觉得有蹩脚的地方。
    JhZ7z587cYROBgVQ
        12
    JhZ7z587cYROBgVQ  
       Jan 23, 2017
    @66450146 哦哦这样子,谢谢科普~
    JhZ7z587cYROBgVQ
        13
    JhZ7z587cYROBgVQ  
       Jan 23, 2017
    @bdbai 嗯嗯,谢谢科普
    fxxkgw
        14
    fxxkgw  
       Jan 23, 2017
    敢不敢好好靠脸吃饭啊 =。=
    congeec
        15
    congeec  
       Jan 23, 2017 via iPhone
    Python 也需要一个这样的东西了。 bundle, cargo 类似
    aec4d
        16
    aec4d  
       Jan 23, 2017
    初略看了下,虽然名字都有 env ,可是这个库和 pyenv 是没有一毛钱关系的,也没有整合
    aec4d
        17
    aec4d  
       Jan 23, 2017
    另外 pyenv+virtualenv 的组合基本没有太大毛病。 pipfile 文件解决在 dev 和 prod 多个环境中安装包略有不同,并没有很惊艳的效果,总结来说现在已有的方案能解决问题。这个库只是想让做的方法更好一点点而已
    Gem
        18
    Gem  
    OP
       Jan 23, 2017
    @aec4d 应该是目前还不完善, pipenv --two/three 这个参数目前不起作用,可能也是我的使用方法不对。
    lightening
        19
    lightening  
       Jan 24, 2017   ❤️ 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 所有包。
    JhZ7z587cYROBgVQ
        20
    JhZ7z587cYROBgVQ  
       Jan 24, 2017
    @lightening 谢谢科普,终于有点明白优势在哪里了,谢谢谢谢
    sunwei0325
        21
    sunwei0325  
       Jan 24, 2017
    膜拜大神的 Github, 顺便看看他写的 Python guide, 大神!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4040 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 05:15 · PVG 13:15 · LAX 22:15 · JFK 01:15
    ♥ Do have faith in what you're doing.