Python 虚拟环境 virtualenv,比如App_1需要的lib版本为1.10,App_2需要的lib版本为1.12,这样在同一个环境中,同时开发App_1和App_2则需要隔离的环境。virtualenv很方便地提供了这种功能。
pip install virtualenv
mkdir test_venv # 其实不是很必要提前创建一个目录 virtualenv -p /usr/local/bin/python test_venv --distribute --no-site-package
其中
-p /usr/local/bin/python 指定将使用/usr/local/bin/python的python解释器 我使用的Mac上同时安装了python2和python3,其中python3安装了virtualenv,仍然可以指定python2作为虚拟环境的python解释器 --distribute 使virtualenv使用新的基于发行版的包管理系统而不是 setuptools 获得的包。该选项会自动在新的虚拟环境中安装 pip ,这样就不需要手动安装了。 --no-site-package 在默认情况下,所有安装在系统范围内的包对于virtualenv是可见的。该选项在创建virtualenv时不会读取系统包
创建后的/test_venv/bin下为:
$ ls activate easy_install-2.7 python-config activate.csh pip python2 activate.fish pip2 python2.7 activate_this.py pip2.7 wheel easy_install python
其中:
activate:这个virtualenv的激活文件 pip:这个virtualenv的独立pip python:python解释器的一个副本 lib/python2.7:所有的新包会被存在这source test_venv/bin/activate
$ which python /Users/xiang/Desktop/test_venv/bin/python
deactivate
rm -rf test_venv
一些补充:
virtualenv拷贝了Python可执行文件的副本,并创建一些有用的脚本和安装了项目需要的软件包,你可以在项目的整个生命周期中安装/升级/删除这些包。 它也修改了一些搜索路径,例如PYTHONPATH,以确保:
A question:
在使用过程中,在虚拟环境下通过命令rm -rf test_venv删除了虚拟环境,但terminal中仍在运行虚拟环境。求指教究竟发生了啥?当然退出后不能再次进入。