为什么说 virtualenv、fabric 和 pip 是 pythoneer 的三大神器?
程序员文章站
2022-05-10 14:46:00
...
回复内容:
这三个对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应用程序模拟出自己的库环境。
非常适合批量部署,不需要考虑是否和别的应用程序环境冲突。