枫叶飞翔 发表于 2017-4-22 10:05:08

sandbox for python

遇到一台机器上部署多个不同的python程序,管理其之间import不同的libs而麻烦
http://virtualenv.openplans.org/
virtualenv通过隔离包目录和系统环境参数来实现多个相对独立的虚拟环境。
这样可避免过多的第三方库因版本依赖造成问题。
同时每个独立的虚拟环境只需通过打包即可分发,方便了系统部署。
1. 安装
# pip install -U virtualenv
Downloading/unpacking virtualenv
Downloading virtualenv-1.5.1.tar.gz (1.4Mb): 1.4Mb downloaded
Running setup.py egg_info for package virtualenv
warning: no previously-included files matching '*.*' found under directory 'docs/_templates'
Installing collected packages: virtualenv
Found existing installation: virtualenv 1.5.1
Uninstalling virtualenv:
Successfully uninstalled virtualenv
Running setup.py install for virtualenv
warning: no previously-included files matching '*.*' found under directory 'docs/_templates'
Installing virtualenv script to /usr/bin
Successfully installed virtualenv
Cleaning up...
#

2. 创建虚拟环境
# virtualenv env_1
New python executable in env_1/bin/python
Installing setuptools............done.
# ls env_1/
binincludeliblib64
#

建议使用 virtualenv --no-site-packages env_1 来创建虚拟环境,限制virtualenv 继承全局的site-packages,从而达到完全虚拟环境
完全的新的虚拟python环境
# cd include/python2.4/
abstract.h       codecs.h         errcode.h      grammar.h      marshal.h      objimpl.h      pyconfig-64.h    pymem.h          setobject.h      token.h
bitset.h         compile.h      eval.h         import.h         metagrammar.h    opcode.h         pyconfig.h       pyport.h         sliceobject.h    traceback.h
boolobject.h   complexobject.hfileobject.h   intobject.h      methodobject.h   osdefs.h         py_curses.h      pystate.h      stringobject.h   tupleobject.h
bufferobject.h   cStringIO.h      floatobject.h    intrcheck.h      modsupport.h   parsetok.h       pydebug.h      pystrtod.h       structmember.h   ucnhash.h
cellobject.h   datetime.h       frameobject.h    iterobject.h   moduleobject.h   patchlevel.h   pyerrors.h       Python.h         structseq.h      unicodeobject.h
ceval.h          descrobject.h    funcobject.h   listobject.h   node.h         pgen.h         pyfpe.h          pythonrun.h      symtable.h       weakrefobject.h
classobject.h    dictobject.h   genobject.h      longintrepr.h    Numeric/         pgenheaders.h    pygetopt.h       pythread.h       sysmodule.h
cobject.h      enumobject.h   graminit.h       longobject.h   object.h         pyconfig-32.h    pymactoolbox.h   rangeobject.h    timefuncs.h

# python
Python 2.4.3 (#1, Sep3 2009, 15:37:37)
on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for i in sys.path:
...   print i
...
/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
/usr/lib/python2.4/site-packages/celery-2.0.3-py2.4.egg
/usr/lib/python2.4/site-packages/uuid-1.30-py2.4.egg
/usr/lib/python2.4/site-packages/multiprocessing-2.6.2.1-py2.4-linux-x86_64.egg
/usr/lib/python2.4/site-packages/pyparsing-1.5.5-py2.4.egg
/usr/lib/python2.4/site-packages/carrot-0.10.6-py2.4.egg
/usr/lib/python2.4/site-packages/anyjson-0.2.5-py2.4.egg
/usr/lib/python2.4/site-packages/SQLAlchemy-0.6.4-py2.4.egg
/usr/lib/python2.4/site-packages/python_dateutil-1.5-py2.4.egg
/usr/lib/python2.4/site-packages/importlib-1.0.2-py2.4.egg
/usr/lib/python2.4/site-packages/amqplib-0.6.1-py2.4.egg
/usr/lib/python2.4/site-packages/pip-0.8.1-py2.4.egg
/usr/lib64/python24.zip
/usr/lib64/python2.4
/usr/lib64/python2.4/plat-linux2
/usr/lib64/python2.4/lib-tk
/usr/lib64/python2.4/lib-dynload
/usr/lib64/python2.4/site-packages
/usr/lib64/python2.4/site-packages/Numeric
/usr/lib64/python2.4/site-packages/PIL
/usr/lib64/python2.4/site-packages/gst-0.10
/usr/lib64/python2.4/site-packages/gtk-2.0
/usr/lib/python2.4/site-packages
>>>

3. 激活这个虚拟python环境,其实主要是为了得到专属的虚拟site-packages
# source bin/activate
(env_1)#

主要是注意shell前面的提示符变成 (env_1) 这个意味着,你再使用python的 ez_install or pip 安装第三方包到 site-packages 是你这个虚拟python环境的,不会影响到全局的系统python环境
4. 我们可以用 "deactivate" 命令退出虚拟环境
(env_1)# deactivate
#
页: [1]
查看完整版本: sandbox for python