Python virtualenv
[ 2010-06-02 10:14:13 | 作者: yuhen ]
字号: 大 | 中 | 小
virtualenv 的作用相当于 Sandbox,它通过隔离包目录和系统环境参数来实现多个相对独立的虚拟环境。如此可避免过多的第三方库因版本依赖造成问题。同时每个独立的虚拟环境只需通过打包即可分发,也大大方便了系统部署。
$ sudo easy_install virtualenv
现在我们可以创建虚拟环境了。
$ virtualenv test1
New python executable in test1/bin/python
Installing setuptools............done.
我们可以看到虚拟目录下已经被安装了基本所需的运行环境。
$ ls test1/bin
activate activate_this.py easy_install easy_install-2.6 pip python
$ ls test1/include/
python2.6
$ ls test1/lib
python2.6
$ ls test1/lib/python2.6/
_abcoll.py copy_reg.pyc linecache.py os.pyc sre_compile.py stat.py
_abcoll.pyc distutils linecache.pyc posixpath.py sre_compile.pyc stat.pyc
abc.py encodings locale.py posixpath.pyc sre_constants.py types.py
abc.pyc fnmatch.py locale.pyc re.py sre_constants.pyc types.pyc
codecs.py fnmatch.pyc ntpath.py re.pyc sre_parse.py UserDict.py
codecs.pyc genericpath.py ntpath.pyc site-packages sre_parse.pyc UserDict.pyc
config genericpath.pyc orig-prefix.txt site.py sre.py warnings.py
copy_reg.py lib-dynload os.py site.pyc sre.pyc warnings.pyc
进入 test1 目录,激活虚拟环境。
$ cd test1
test1$ source bin/activate
(test)test1$ which python
/home/yuhen/projects/test1/bin/python
(test)test1$ which easy_install
/home/yuhen/projects/test1/bin/easy_install
(test1)test1$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['',
'/home/yuhen/projects/test1/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg',
'/home/yuhen/projects/test1/lib/python2.6/site-packages/pip-0.7.2-py2.6.egg',
'/home/yuhen/projects/test1/lib/python2.6',
'/home/yuhen/projects/test1/lib/python2.6/plat-linux2',
'/home/yuhen/projects/test1/lib/python2.6/lib-tk',
'/home/yuhen/projects/test1/lib/python2.6/lib-old',
'/home/yuhen/projects/test1/lib/python2.6/lib-dynload',
'/usr/lib/python2.6',
'/usr/lib64/python2.6',
'/usr/lib/python2.6/plat-linux2',
'/usr/lib/python2.6/lib-tk',
'/usr/lib64/python2.6/lib-tk',
'/home/yuhen/projects/test1/lib/python2.6/site-packages',
'/usr/local/lib/python2.6/dist-packages/virtualenv-1.4.9-py2.6.egg',
'/usr/local/lib/python2.6/dist-packages/simplejson-2.1.1-py2.6-linux-x86_64.egg',
'/usr/local/lib/python2.6/site-packages',
'/usr/local/lib/python2.6/dist-packages',
'/usr/lib/python2.6/dist-packages',
'/usr/lib/pymodules/python2.6',
'/usr/lib/pymodules/python2.6/gtk-2.0',
'/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode']
>>>
可以看到使用 "souce bin/active" 激活以后,命令提示行多了一个 "(test1)" 前缀,同时 python 和 easy_install 默认会使用虚拟环境 bin 目录下的程序。sys.path 显示当前虚拟环境的库目录被添加到搜索路径列表中。
(test1)$ easy_install MySQL-python
Searching for MySQL-python
Reading http://pypi.python.org/simple/MySQL-python/
Reading http://sourceforge.net/projects/mysql-python
Best match: MySQL-python 1.2.3c1
Downloading http://sourceforge.net/.../1.2.3c1/MySQL-python-1.2.3c1.tar.gz/download
Processing download
Running MySQL-python-1.2.3c1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Em0wfb/MySQL-python-1.2.3c1/egg-dist-tmp-vzoJ2t
In file included from _mysql.c:36:
/usr/include/mysql/my_config.h:1050:1: warning: "HAVE_WCSCOLL" redefined
In file included from /usr/include/python2.6/Python.h:8,
from pymemcompat.h:10,
from _mysql.c:29:
/usr/include/python2.6/pyconfig.h:808:1: warning: this is the location of the previous definition
zip_safe flag not set; analyzing archive contents...
Adding MySQL-python 1.2.3c1 to easy-install.pth file
Installed /home/yuhen/projects/python/test1/lib/python2.6/site-packages/MySQL_python-1.2.3c1-py2.6-linux-x86_64.egg
Processing dependencies for MySQL-python
Finished processing dependencies for MySQL-python
(test1)$ ls -l lib/python2.6/site-packages/
total 444
-rw-r--r-- 1 yuhen yuhen 283 2010-06-02 09:46 easy-install.pth
-rw-r--r-- 1 yuhen yuhen 106325 2010-06-02 09:46 MySQL_python-1.2.3c1-py2.6-linux-x86_64.egg
drwxr-xr-x 4 yuhen yuhen 4096 2010-06-02 09:45 pip-0.7.2-py2.6.egg
-rw-r--r-- 1 yuhen yuhen 333447 2010-06-01 23:58 setuptools-0.6c11-py2.6.egg
-rw-r--r-- 1 yuhen yuhen 30 2010-06-02 09:45 setuptools.pth
(test1)$ cat lib/python2.6/site-packages/setuptools.pth
./setuptools-0.6c11-py2.6.egg
(test1)$ python
>>> import MySQLdb
>>> MySQLdb.version_info
(1, 2, 3, 'gamma', 1)
>>>
MySQL-python 被安装到了虚拟环境中,且 easy-install.pth 中正确添加了 egg 搜索路径。
最后我们可以用 "deactivate" 命令退出虚拟环境。
(test1)test1$ deactivate
在创建虚拟环境时,我们可以添加 "--no-site-packages" 参数指示虚拟环境不要访问 global site-packages。
$ virtualenv --no-site-packages test2
New python executable in test2/bin/python
Installing setuptools............done.
$ cd test2
test2$ source bin/activate
(test2)test2$ python
>>> import sys
>>> sys.path
['',
'/home/yuhen/projects/python/test2/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg',
'/home/yuhen/projects/python/test2/lib/python2.6/site-packages/pip-0.7.2-py2.6.egg',
'/home/yuhen/projects/python/test2/lib/python2.6',
'/home/yuhen/projects/python/test2/lib/python2.6/plat-linux2',
'/home/yuhen/projects/python/test2/lib/python2.6/lib-tk',
'/home/yuhen/projects/python/test2/lib/python2.6/lib-old',
'/home/yuhen/projects/python/test2/lib/python2.6/lib-dynload',
'/usr/lib/python2.6',
'/usr/lib64/python2.6',
'/usr/lib/python2.6/plat-linux2',
'/usr/lib/python2.6/lib-tk',
'/usr/lib64/python2.6/lib-tk',
'/home/yuhen/projects/python/test2/lib/python2.6/site-packages']
>>>
分享到:
相关推荐
例如,如果项目需要使用Python 3.6,可以使用`virtualenv -p python3.6 myenv`来指定Python版本。 在实际开发中,虚拟环境的使用极大地提高了工作效率。开发者可以自由地在一个环境中安装项目所需的特定版本的包,...
emacs-python-environment, 用于 Emacs Lisp的python virtualenv API 用于 Emacs Lisp的 python-virtualenv API链接:存储库( 位于 GitHub )问题跟踪程序( 位于 GitHub )Travis CI MELPA MELPA稳定 Emacs与使
### Python Virtualenv虚拟环境配置与使用教程详解 #### 概述 在进行Python开发时,开发者经常需要同时处理多个项目,这些项目有时需要不同的Python版本或不同版本的第三方库。例如,项目A可能依赖于six库的1.12.0...
在Python开发中,尤其是大型项目或有多个项目同时进行时,使用virtualenv是非常重要的实践。下面我们将深入探讨Python virtualenv虚拟环境的实现过程。 首先,安装virtualenv是创建虚拟环境的第一步。通过运行`pip ...
virtualenv可以创建独立Python开发环境,比如当前的全局开发环境是python3.6,现在我们有一个项目需要使用django1.3,另一个项目需要使用django1.9,这个时候就可以使用virtualenv创建各自的python开发环境了。...
virtualenv 是用来创建一个虚拟的python环境的第三方包,一个专属于项目的python环境。 安装virtualenv(请确保python和pip成功安装): pip3 install virtualenv 创建python虚拟环境: virtualenv [虚拟环境名称]...
【Python】Virtualenv_-_Python虚拟环境,_三大神器之一
"Python 3.5 上使用 virtualenv 创建虚拟环境的坑" Python 3.5 上使用 virtualenv 创建虚拟环境是开发者经常遇到的问题,本篇文章将详细介绍 Python 3.5 上使用 virtualenv 创建虚拟环境的两个常见的坑,并提供解决...
使用virtualenv,开发者可以为每个项目创建一个独立的Python环境,这样每个项目都可以拥有自己的一套库,互不影响。 首先,我们需要在系统上安装virtualenv库。如果你使用的是Python 3,那么`venv`模块已经内置,...
这是有关Python&Virtualenv&Visual Studio Code 的说明。``````````````更不稳定的是,我们可能使用的操作系统也使用相同版本的Python。如果我们更新操作系统也使用的某个程序包,则可能会导致操作系统出现问题。...
在不同项目中,可能会使用不同版本的Python库,而Virtualenv可以避免这些库之间可能出现的冲突。以下是使用Virtualenv的流程: 1. **安装Virtualenv**: 通过pip进行安装: ``` pip install virtualenv ``` 2....
virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够: 1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用 安装 复制代码 代码如下: sudo apt-...
同一台服务器上部署多个项目时,项目可能使用不同版本的django或者其它不同的python库,这种情况下可以使用virtualenv来创建独立的python运行环境,将不同项目的运行环境隔离出来。 virtualenv可以创建一个拥有...
6. **管理不同Python版本**:virtualenv还可以与pyenv等工具结合使用,帮助你管理多个Python版本,为每个版本创建独立的虚拟环境。 总的来说,virtualenv是Python开发中不可或缺的工具,它使得项目依赖的管理和隔离...
python-virtualenv python-virtualenv是一个创建 virtualenvs 的小包,因此您可以在项目中包含带有自定义包的 python,并且不会污染全局 python 安装。 用法 virtualenv = require ( 'python-virtualenv' ) ; // ...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
Python环境管理是开发过程中的重要环节,特别是在使用众多第三方库时,为了防止不同项目之间的依赖冲突,我们需要将每个项目的Python环境隔离开。`virtualenv` 和 `virtualenvwrapper` 正是为此目的而设计的两个工具...
nodeenv - Node.js的虚拟环境兼容Python的virtualenv
主要介绍了python安装virtualenv虚拟环境步骤,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下