Home  >  Article  >  Backend Development  >  为什么说 virtualenv、fabric 和 pip 是 pythoneer 的三大神器?

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

WBOY
WBOYOriginal
2016-06-06 16:22:361298browse

回复内容:

这三个对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应用程序模拟出自己的库环境。
非常适合批量部署,不需要考虑是否和别的应用程序环境冲突。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn