• 技术文章 >后端开发 >Python教程

    为什么说 virtualenv、fabric 和 pip 是 pythoneer 的三大神器?

    2016-06-06 16:22:36原创629

    回复内容:

    这三个对Python项目部署非常便利。
    1. virtualenv 用来建立一个虚拟的python环境,一个专属于项目的python环境。用virtualenv 来保持一个干净的环境非常有用。
    2. pip 用来解决项目依赖问题。将项目所有依赖的第三方库写在一个requirements.txt 中用pip 批量安装。一般和virtualenv 配合使用,将所有包安装在virtualenv 的环境中。
    3. fabric 用来自动化远程部署项目,非常的方便。可以根据需要在本地、远程依次执行一系列shell 命令、程序等。比如从代码库更新代码,执行数据迁移脚本,重启服务进程,完成自动化的部署。 easy_install 和 setuptools 提供的模块依赖机制同样好用, 个人来说不是很喜欢 pip.
    virtualenv 类似的是更强大的 zc.buildout , 支持通过配置文件生成环境, 换个python版本都没问题, 通过 buildout 插件, 自动下载个apache并编译支持python都不是问题. 论功能, zc.buildout 更强. ansible 呢… “神器”这个词是编程世界的“伪言Flag” 我不赞同, 相比virtualenv和pip, buildout才是真正的好东西, 不论是虚拟python环境的干净程度, 用法的方便度, 对安装包的可定制/操控度, 还是对批量部署的支持都是远超前者. 可以说 virtualenv + pip 还停留在手工时代, 而buildout 已经进入了机械时代.

    至于 fabric, 的确是个好工具 简简单单一个 fabfile 就可以实现代码的批量部署和管理, 并且也可以选择不用它的fab命令而自己基于它的api进行深度开发, 唯一的弱点就是对ssh的依赖略重了吧.

    另外推荐另一个好工具 supervisor. 出处在哪,我不赞同 我推荐以下三个神器 sqlalchemy, twisted, gevent 正好这学期在学用到python的课。fabric没用过,pip是方便了一些python package的安装管理过程,virtualenv提供了一个干净的virtual environment。
    pip和virtualenv的确都是挺好用的,对于我学的那门课,这两个是必须要用到的,否则涉及到引用python package和涉及到切换环境的那些作业都基本没办法做。 但是至于他们是不是神器我就不知道了。
    感谢楼上的回答,我最近就去试试看楼上提到的这些python工具。 这学期接触了python,觉得真是好东西,个人觉得比java好用多了 目前没有用过fabric,先谈谈virtualenv和pip

    pip和java中的maven类似(只有依赖管理,没有构建功能),可以直接引用别的项目,也不用自己在项目里附带别人的代码。requirements.txt也是非常重要的东西,只需要pip install -r requirements.txt 就好了。

    virtualenv可以创建一个独立的Python环境,单独的应用使用单独的环境。这样,部署应用的时候只需要新创建一个virtualenv,然后pip install -r requirements.txt,撤销应用的时候只需要删除virtuenv就好。避免了在全局环境安装了一大堆,管理困难,而且还有可能冲突。(当然,虚拟机、容器也可以达到这个效果,但是代价太大)


    2016-02-17更新

    fabric就是让一些经常执行的操作、脚本自动化、统一化。减少了人为犯错的概率。
    当然,现在好像ansible更加流行。 只用过virtualenv,这个可以为每个Python应用程序模拟出自己的库环境。
    非常适合批量部署,不需要考虑是否和别的应用程序环境冲突。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:
    上一篇:学习 Python 用哪本书好? 下一篇:python实现梯度下降代码问题?
    千万级数据并发解决方案

    相关文章推荐

    • 简单学习Python字符和列表(实例详解)• 图文详解怎么用Python绘制动态可视化图表• 介绍六个超好用的Python内置函数• 一起聊聊Python的编码样式• 带你搞懂Python反序列化
    1/1

    PHP中文网