使用virtualenv¶
virtualenv 是一个用于创建和激活独立的Python环境的工具,该环境允许在不中断生产Python环境的情况下安装和试验Python包。当使用诸如 pip install -e .
例如,强烈建议在virtualenv中这样做。这通常比在系统站点包中安装Astropy的开发版本更好,并且必须跟踪您的环境是否处于“已知良好”的配置中,以供生产/科学使用。
使用virtualenv也是一种很好的方法,可以在不中断正常生产环境的情况下,试用您没有积极进行开发工作的软件的新版本。
我们不会在这里提供关于使用virtualenv的完整教程 — 上面链接的virtualenv文档是一个更好的起点。但下面是一个快速概述,介绍如何使用默认的Python版本为Astropy开发设置virtualenv:
安装:virtualenv
$ pip install virtualenv
或者(在Debian/Ubuntu上)::
$ sudo apt-get install python-virtualenv
等。
(建议)在您有写访问权限的路径下为所有虚拟机创建根目录。例如::
$ mkdir ~/.virtualenvs
创建 Astropy 虚拟环境:
$ virtualenv --distribute --system-site-packages ~/.virtualenvs/astropy-dev
这个
--system-site-packages
选项继承系统站点包目录中已经安装的所有包;这使您不必在virtualenv中重新安装诸如Numpy和Scipy之类的包。但是,如果您希望您的virtualenv使用Numpy的开发版本,您仍然可以将Numpy安装到virtualenv中,并且它将优先于站点包中安装的版本。激活virtualenv::
$ source ~/.virtualenvs/astropy-dev/bin/activate
或者如果你使用csh变体:
$ source ~/.virtualenvs/astropy-dev/bin/activate.csh
virtualenv也可以在Windows上运行 — 有关详细信息,请参阅文档。
如果virtualenv成功激活,它的名称应该出现在shell提示符中:
(astropy-dev) $
可在任何时间通过以下方式禁用VirtualAV:
(astropy-dev) $ deactivate
现在只要virtualenv激活,就可以使用
pip
将自动安装到您的virtualenv而不是系统站点包中。考虑将Astropy以开发模式安装到virtualenv中,如前所述 “激活”astropy的开发版本 .
在IPython中使用virtualenv¶
备注
从ipython0.13开始,这个功能已经内置到IPython中了,这些步骤对于IPython识别它是在启用virtualenv的情况下运行是不必要的。
每个virtualenv都有自己的 bin/
,因为IPython是用纯Python编写的,所以可以始终将IPython直接安装到virtualenv中。但是,如果您不希望每次创建virtualenv时都安装IPython,那么让ipythonvirtualenv感知就足够了。
检查您是否已经在中拥有IPython配置文件
~/.ipython/profile_default/
;如果没有,请创建一个::$ ipython profile create
编辑
~/.ipython/profile_default/ipython_config.py
并在末尾添加以下内容:import os execfile(os.path.join(os.environ['HOME'], '.ipython', 'virtualenv.py'))
最后,创建
~/.ipython/virtualenv.py
模块:import site from os import environ from os.path import join from sys import version_info if 'VIRTUAL_ENV' in environ: virtual_env = join(environ.get('VIRTUAL_ENV'), 'lib', 'python%d.%d' % version_info[:2], 'site-packages') site.addsitedir(virtual_env) print 'VIRTUAL_ENV ->', virtual_env del virtual_env del site, environ, join, version_info
现在IPython将从virtualenv导入所有适用的包。
备注
这不是魔法。如果您切换到使用与IPython主安装不同的Python版本的virtualenv,这对您没有帮助 — 相反,请为所讨论的Python版本使用适当的IPython安装。
虚拟环境包装¶
virtualenvwrapper 是对virtualenv的一组增强,主要通过简单的shell脚本和别名实现。它会自动将所有的虚拟机组织到一个目录下(如上所述)。要创建新的virtualenv,只需使用 'mkvirtualenv <env_name>'
命令,它将在默认位置自动创建该名称的新virtualenv。
要使用virtualenvwrapper激活virtualenv,不需要考虑文件系统的环境位置或要运行哪个激活脚本。简单地跑 'workon <env_name>'
. 你也可以列出所有的虚拟人 lsvirtualenv
. 这只是触及了virtualenvwrapper附带的好东西的表面。
一个警告是它不支持类似csh的Shell。存在 virtualenvwrapper-win ,它将virtualenvwrapper移植到Windows批处理脚本。