VirtualEnv 和Pip 构建Python的虚拟工作环境

简介:

(这是打算写的这个系列 http://www.v2ex.com/t/33489 的第一篇,我不会太监,毕竟这些内容本来在公司内部或多或少就会有整理,不过工作本身忙,进度快慢不能保证,各位谅解)

一 般而言,所有python相关的包会装在系统目录里,譬如/usr/lib/ 或者/usr/local/lib/,这样的话,假设两个开发分支要求的库不一样,譬如对应在线版本的开发环境使用 Django1.3,但是一个新的开发分支基于Django1.4,两者就会互相影响。

Virtualenv 是一个虚拟环境程序,可以把开发环境隔离。基本思想是建立不同的环境目录,其中装有独立的各类包,甚至也可以是独立的不同版本python程序。

1. 安装 virtualenv 和 virtualenvwrapper,后者是一套很有用的扩展,提供了方便切换开发环境的快捷命令

以下命令都是基于Ubuntu的(Mac OS 上可以参考 https://gist.github.com/1208841 )

sudo pip install virtualenv
sudo pip install virtualenvwrapper

#2 在用户的home目录下创建一个名为product的虚拟环境

export WORKON_HOME=~/envs
mkdir $WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv --no-site-packages product #--no-site-packages 参数代表所有的Python包都从虚拟环境里找,任何时候都不去例如/usr/lib/python/这类全局环境里查找

初期用virtualenv的时候的确不需要系统的安装包,即创建一个裸环境,可以使用这个参数。



这 步完成后,就建立了一个名为product的虚拟环境目录,用workon product便能切换这个环境下,所谓切换,就是说这时候如果执行which python,就会发现现在的python不是/usr/bin/python,而是~/envs/product/bin/python,相应的所有的 第三方python依赖也都在~/envs/product/lib/python2.7/site-packages/ 下。

#3 为了偷懒,可以在bashrc里建立一个alias,譬如

alias product='source ~/.bashrc; workon product; cd ~/envs/product/src'

alias stage='source ~/.bashrc; workon stage; cd ~/envs/stage/src'

这样执行product,stage就能分别切换到相应的虚拟工作环境,同时进入工作目录。

#4 未来要装相应的库,直接用pip即可,但是要确保pip也是相应的虚拟环境里的,可以用which pip检查,譬如要装django,就可以用

pip install django

pip也可以列出当前虚拟环境里所有的依赖,可以用这个办法将所有这些依赖写入一个文件,例如

pip freeze > product.dev     ##导出已安装的包列表
如果在另外一个环境里要重新安装这些依赖,执行

pip install -r product.dev

即可


备注:virtualenvwrapper的使用:

列出虚拟环境列表

workon

也可以使用

lsvirtualenv

新建虚拟环境

mkvirtualenv [虚拟环境名称]

启动/切换虚拟环境

workon [虚拟环境名称]

删除虚拟环境

rmvirtualenv [虚拟环境名称]

离开虚拟环境

deactivate






      本文转自Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1597898,如需转载请自行联系原作者

相关文章
|
28天前
|
Unix Shell Linux
赞!优雅的Python多环境管理神器!易上手易操作!
赞!优雅的Python多环境管理神器!易上手易操作!
|
29天前
|
存储 缓存 Linux
如何在Linux环境下对pip的缓存地址进行修改
如何在Linux环境下对pip的缓存地址进行修改
|
1天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
5天前
|
JavaScript 搜索推荐 前端开发
音乐发现平台:借助Python和Vue构建个性化音乐推荐系统
【4月更文挑战第11天】本文介绍了如何使用Python和Vue.js构建个性化音乐推荐系统。首先确保安装Python、Node.js、数据库系统和Git。后端可选择Flask或Django搭建RESTful API,处理歌曲数据。前端利用Vue.js创建用户界面,结合Vue CLI、Vuex和Vue Router实现功能丰富的SPA。通过Vuex管理状态,Axios与后端通信。这种前后端分离的架构利于协作和系统扩展,助力打造定制化音乐体验。
|
5天前
|
机器学习/深度学习 人工智能 算法
|
11天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
28 6
|
19天前
|
C语言 Python
Python字典推导式:高效构建字典的利器
在Python编程中,字典推导式(Dictionary Comprehension)是一种强大的构造工具,它允许我们以简洁的方式从现有可迭代对象创建新的字典。通过字典推导式,我们可以轻松地对数据进行转换、过滤或重新组织,以符合特定的需求。本文将深入探讨字典推导式的概念、语法和应用场景,帮助读者更好地掌握这一高效的编程工具。
|
28天前
|
机器学习/深度学习 算法框架/工具 Python
如何使用Python的Keras库构建神经网络模型?
如何使用Python的Keras库构建神经网络模型?
7 0
|
29天前
|
存储 算法 调度
使用Python构建预约式电梯调控系统
随着科技的快速发展和城市化进程的加速,电梯作为现代建筑的重要交通工具,其运行效率和乘客体验越来越受到人们的关注。传统的电梯运行方式往往是基于楼层按钮呼叫的,这种方式在高峰时段往往会造成电梯的拥堵和等待时间过长。
17 0
|
29天前
|
Shell Python Windows
通过Python实现win11环境下FTP的上传与下载
通过Python实现win11环境下FTP的上传与下载