走了一些弯路,简单记录一下
本文参考以下文章在本地环境下测试成功
ubuntu16.04
廖雪峰的博客!
Virtualenv的介绍
创建虚拟环境的时候一些文章用的是virtualenv命令而另一些用的是mvirtualenv
效果是差不多的,区别在于刚开始安装了virtualenv一个软件还要virtualenvwrapper这两个。下面一一道来
首先要明白的是创建虚拟环境的作用是什么
- 开发Python应用的时候,会需要不同版本的Python运行环境。
- 不同的的应用对不同版本的库文件。
- 不同应用之间的隔离和不同插件之间的隔离。
- 虚拟环境可以随时恢复随时删除。
首先要在宿主环境里面安装virtualenv和virtualenvwrapper
sudo pip install virtualenv
sudo pip install virtualenvwrapper
在~/.bashrc文件里面加上:
# 其中#username改成你自己的用户名,.virtualenv是虚拟环境的家目录。
export WORKON_HOME=/home/username/.virtualenv
source /usr/local/bin/virtualenvwrapper.sh
之后创建虚拟环境的存放路径
之后source ~/.bashrc
现在我们用-p选项创建一个python3的虚拟环境,当然系统里得先装好了python3。
mkvirtualenv -p python3 py3env
-p 后面的参数指定了python3(也有可能要换成python3.2/python3.4,具体要看你系统里面/use/bin/里面的文件是什么名字),如果去掉这个参数,就会使用系统默认的python。最后一个参数py3env是创建的这个环境的名字。
(py3env) 03:21:35@backbox:06~/.virtualenvs $ l
get_env_details* postmkvirtualenv premkvirtualenv*
initialize postrmvirtualenv* prermvirtualenv*
postactivate preactivate* py3_django/
postdeactivate predeactivate py3env/
postmkproject* premkproject*
这里要说两点,
####一。有些文章只安装了$ pip3 install virtualenv
这时候,新建虚拟环境的时候就需要用$ virtualenv --no-site-packages venv
命令。其中 --no-site-packages参数指定,已经安装到系统Python环境中的所有第三方包都不会复制过来。可以得到一个相对简洁的Python环境。进入这个环境需要$ source venv/bin/activate
####二。我的本地环境安装了Python2.7和Python3.5,$ sudo pip install virtualenv
之后需要再$ sudo pip3 install virtualenv
么?答案是不需要。
03:23:55@backbox:01~ $ which virtualenv /usr/local/bin/virtualenv
执行完了之后,会自动切换到这个新创建的虚拟环境。我们会发现命令行提示符会发生改变,虚拟环境的名字会加在提示符开头:
(py3_django) 03:14:28@backbox:181~/django/BookManager $
现在看一下PS1 的值
(py3_django) 03:41:41@backbox:191~/django/BookManager $ echo HelloWorld
HelloWorld
(py3_django) 03:41:58@backbox:192~/django/BookManager $ echo $PS1
(py3_django) \[\e]0;\u@\h: \w\a\]\[\033[1;31;1m\]\t@\h:\[\033[32;00m\]\j\#\[\033[1;37;1m\]\w \[\e[30;00m\]\$
其他一些常用命令:
deactivate # 退出当前虚拟环境
workon [虚拟环境名称] # 使用某个虚拟环境
rmvirtualenv [虚拟环境名称] # 删除某个虚拟环境
lsvirtualenv # 列出所有虚拟环境
用pip list 和 pip freeze 命令查看软件包,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
(py3env) 03:17:37@backbox:02~ $ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.1)
setuptools (38.4.0)
wheel (0.30.0)
(py3env) 03:17:46@backbox:03~ $ pip freeze
(py3env) 03:17:53@backbox:04~ $
在虚拟环境中设置默认命令
有些时候,我们希望在进入虚拟环境之后执行某些命令,或者设置一些环境变量。
例如:在django运行的时候,可以通过环境变量DJANGO_SETTINGS_MODULE来指定配置文件的路径。
我们可以在虚拟环境目录下面创建文件bin/postactivate,并在文件里面写入:
export DJANGO_SETTINGS_MODULE=config.django.production
这个文件会在每次进入这个虚拟环境的时候被执行,这样这个参数就会被设置了。
除了postactivate以外,其他阶段也可以有这样的设置,参看:https://virtualenvwrapper.readthedocs.org/en/latest/scripts.html