为什么说 virtualenv、fabric 和 pip 是 pythoneer 的三大神器?
- WBOY원래의
- 2016-06-06 16:22:361328검색
回复内容:
这三个对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으로 문의하세요.