使用python之环境管理
情景1:不同python版本的管理
同一电脑上的多个python版本之前的管理,为了突出问题的普遍存在,下面是有人在segmentfault上提的问题。

摘自:http://segmentfault.com/q/1010000000162043
情景2:同一python版本中同一库的不同版本管理
例如在python2.7下应用A是基于Django1.6,应用B是基于Django1.7的,这种情况怎么管理。
为解决以上问题,下面隆重介绍下virtualenv、virtualenvwrapper。
virtualenv
摘自virtualenv官网的https://virtualenv.pypa.io/en/latest/virtualenv.html一段介绍:
“The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into/usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.
Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.
Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.”
大意就是virtualenv用于在一台机器上创建多个独立的python运行环境,可以解决:
l 隔离项目之间的第三方包依赖
l 在没有权限的情况下安装新的Python软件包
除此之外,还有一个额外的好处:部署应用时,把开发环境的虚拟环境打包到生产环境即可。
安装
方式一:通过pip
|
[sudo] pip install virtualenv |
方式二:源码方式
|
下载、解压 cd virtualenv-X.X [sudo] python setup.py install |
方式N…
使用
创建虚拟环境
|
virtualenv [虚拟环境名称] /virtualevn.exe [虚拟环境名称] |
我的环境是windows python3.4,这样创建虚拟环境:
E:\>D:\Python34\Scripts\virtualenv.exe env_py3.4
Using base prefix 'D:\\Python34'
New python executable in env_py3.4\Scripts\python.exe
Installing setuptools, pip...done.
创建虚拟环境env_py3.4之后,对应目录下面有以下文件夹:
E:\env_py3.4 的目录
2014/11/26 15:38 <DIR> .
2014/11/26 15:38 <DIR> ..
2014/05/16 15:34 <DIR> Include
2014/11/26 15:38 <DIR> Lib
2014/11/26 15:38 <DIR> Scripts
其中Lib/site-packages包含了,从系统安装的python3.4下面的库。默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境
|
virtualenv --no-site-packages [虚拟环境名称] |
启用虚拟环境
|
source bin/activate或者 Scripts\activate.bat |
启用虚拟环境之后,命令行提示符将以虚拟环境名为前缀,如(env_py3.4) E:\env_py3.4>。也可以通过python打印出os.sys.path进行验证,如在我的env_py3.4虚拟环境启用之后,系统path路径如下所示:
E:\env_py3.4>Scripts\activate
(env_py3.4) E:\env_py3.4>python
Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:24:06) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print(os.sys.path)
['', 'E:\\env_py3.4\\Scripts\\python34.zip', 'E:\\env_py3.4\\DLLs', 'E:\\env_py3
.4\\lib', 'E:\\env_py3.4\\Scripts', 'D:\\Python34\\Lib', 'D:\\Python34\\DLLs', '
E:\\env_py3.4', 'E:\\env_py3.4\\lib\\site-packages']
从os.sys.path中可以看出,这个环境下执行python相关的操作都是限定在虚拟环境中。
退出虚拟环境
|
bin/deactivate 或者 Scripts\deactivate |
如退出env_py3.4虚拟环境,命令行提示符前缀也相应改变了。
(env_py3.4) E:\env_py3.4>Scripts\deactivate
E:\env_py3.4>
在虚拟环境中安装新的python软件包,跟正常的python一样,并且虚拟环境中已经附带pip、easy_install等工具,可以非常方便的使用。
virtualenvwrapper
Virtualenvwrapper 是一个Virtualenv 的extension,可使虚拟环境的管理变得更容易。详细来说,Virtualenvwrapper 提供下述功能:
l 将所有的虚拟环境整合在一个目录下。
l 管理(新增、移除、复制)所有的虚拟环境。
l 可以使用一个命令切换虚拟环境。
l Tab 补全虚拟环境的名字。
l 每个操作都提供允许使用者自定的hooks。
l 可撰写容易分享的extension plugin 系统。
安装
通过pip或者easy_install安装virtualenvwrapper
|
pip install virtualenvwrapper |
默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行。
说明:virtualenvwrapper is a set of shell functions defined in Bourne shell compatible syntax。所以在window平台下,是不是使用不了的,但是对应有一个virtualenvwrapper-win版本(https://pypi.python.org/pypi/virtualenvwrapper-win)。
virtualenvwrapper-win将安装在python根目录下面,如D:\Python34。
# using pip
pip install virtualenvwrapper-win
# using easy_install
easy_install virtualenvwrapper-win
# from source
git clone git://github.com/davidmarble/virtualenvwrapper-win.git
cd virtualenvwrapper-win
python setup.py install
使用
virtualenvwrapper-win和virtualenvwrapper的使用方式完全一样:
l 列出虚拟环境列表:workon 或者lsvirtualenv
l 新建虚拟环境:mkvirtualenv [虚拟环境名称]
l 启动/切换虚拟环境:workon [虚拟环境名称]
l 删除虚拟环境:rmvirtualenv [虚拟环境名称]
l 离开虚拟环境:deactivate.
例如,我创建了3个虚拟环境
…….
(vn_py3.4_app2) D:\Python34>mkvirtualenv.bat vn_py3.4_app3
Using base prefix 'D:\\Python34'
New python executable in vn_py3.4_app3\Scripts\python.exe
Installing setuptools, pip...done.
(vn_py3.4_app3) D:\Python34>workon.bat
Pass a name to activate one of the following virtualenvs:
==========================================================
vn_py3.4_app1
vn_py3.4_app2
vn_py3.4_app3
默认创建的虚拟环境路径为:%USERPROFILE%\Envs,即C:\Users\用户名\Envs。
切换虚拟环境:
(vn_py3.4_app3) D:\Python34>workon.bat vn_py3.4_app1
(vn_py3.4_app1) D:\Python34>workon.bat vn_py3.4_app2
(vn_py3.4_app2) D:\Python34>
注意:如果window下面碰到D:\Python34\Scripts>mkvirtualenv.bat F:\evn_py3.4_app1
python.exe: can't open file 'D:\Python34\Scripts\virtualenv-script.py': [Errno 2
] No such file or directory,修改mkvirtualenv.bat中的python.exe "%PYHOME%\Scripts\virtualenv-script.py" %ARGS% ==》python.exe "%PYHOME%\Scripts\virtualenv.exe" %ARGS%即可。
总结
基于virtualenv + virtualenvwrapper可以很好的完成环境隔离,保证对每个应用的环境是干净的。而且对一个干净的环境可以通过:
pip freeze > requirements.txt将包依赖信息保存在requirements.txt文件
pip install -r requirements.txt会自动从网上下载并安装所有包
方便应用部署分发,关于pip软件包管理再下一篇介绍。
相关连接:
https://virtualenv.pypa.io/en/latest/index.html
http://virtualenvwrapper.readthedocs.org/en/latest/index.html
使用python之环境管理的更多相关文章
- 优雅的使用python之环境管理
优雅的使用python之环境管理 缘起 情景1:不同python版本的管理 同一电脑上的多个python版本之前的管理,为了突出问题的普遍存在,下面是有人在segmentfault上提的问题. 摘自: ...
- Python多环境管理神器(pyenv)
前面我们已经介绍了,python中两种最基础的虚拟环境管理工具,venv和virtualenv,其中virtualenv可以和virtualenvwrapper配合使用.详情请参考:https://w ...
- Python多环境管理
Python环境管理 什么是Anaconda Anaconda是专注于数据分析的Python发行版本,包含了conda.Python等190多个科学包及其依赖项.Anaconda通过管理工具包.开发环 ...
- python虚拟环境管理之virtualenv,virtualenvwrapper,pipenv,conda
虚拟环境的作用 使python环境拥有独立的包,避免污染原本的python环境.为不同的项目创建不同的环境可以避免安装的库过于庞大和相互干扰. 例如你想在同一台机器上开发用python2和python ...
- python多环境管理一(venv与virtualenv)
一.背景 我们经常会遇见这样的场景: 1.各个项目使用的python版本不相同 由于Python的解释器版本众多,各版本之间差异非常大.特别是python2和python3,互不兼容. 有些项目可能用 ...
- Python多环境管理神器(pipenv)
pipenv 参考官网:https://pipenv.pypa.io/ pipenv 是一款比较新的包管理工具,其借鉴了 javascript 的 npm 和 PHP 的 composer 等理念,通 ...
- Python多环境管理神器(Anaconda)
为了解决python多版本共存,解决不同版本之间的依赖冲突,虚拟环境隔离等问题,我们前面介绍了venv.virtualenv.virtualenvwrapper.pyenv.pipenv等众多工具.下 ...
- CentOS7下python工作环境管理
一.pyenv管理不同的python版本1.下载安装git clone git://github.com/yyuu/pyenv.git ~/.pyenv echo 'export PYENV_ROO ...
- python虚拟环境管理包virtualenvwrapper
1.打开cmd 2.安装virtualenvwrapper pip install virtualenvwrapper-win 3.配置虚拟环境的位置 新建系统变量默认在c盘 4.新建虚拟环境 mkv ...
随机推荐
- C# 多线程学习总结
C# 多线程学习总结 C#多线程学习(一) 多线程的相关概念 什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的. ...
- 认识WinDbg
WinDbg学习笔记(一)--认识WinDbg 一.前言 本人学习WinDbg已经有好几天了,虽说技术掌握的还不太熟练,不过也总算是入门了在学习WinDbg的过程中,觉得WinDbg真的比Oll ...
- Python 用SMTP发送邮件
一.简介 上面介绍了传统邮件的生成和解析,这些都是non-internet,也就是不需要网络就可一完成的.那么当生成了邮件,下一步就是发送了,本文就讲解利用SMTP协议发送邮件. 正如SMTP(Sim ...
- 记一次有趣的互联网事件及console.log~
寂寞的中国互联网又一次瘫痪了. 说是顶级域的根挂了,不知道是黑客还是某个实习生干挂的. 反正到现在还没有人来解释这件事. 先普及一下,为什么顶级域的根挂了全中国都挂了. 那是因为dns解析的特点是递归 ...
- json时间格式的互换
c#代码 public class DateTimeUtil { /// <summary> /// 把json的时间格式还原-服务端 /// </summary> /// & ...
- 搜狗主页页面CSS学习小记
1.边框的处理 要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言,sougou有很好的方法来 ...
- FileTable初体验
FileTable初体验 阅读导航 启用FILESTREAM设置 更改FILESTRAM设置 启用数据库非事务性访问级别 FileTable 在我接触FileTable之前,存储文件都是存储文件的链接 ...
- [置顶] NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析--吐血放送
NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析,限于个人水平,如有错误请留言指出! TcpSink类的recv()方法: void TcpSink::recv(Packet ...
- linux常见笔试题
一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 来 ...
- Linux文件系统十问,你知道吗?
关于文件系统,相信大家都不陌生.身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢.那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧: 1.机械磁 ...