Nginx+uWSGI+Mysql+Django+Virtualenv环境部署

安装软件包

我的Linux是Ubuntu,需要安装Python3,如果你需要安装其他版本替换即可

sudo apt-get install mysql-server python3 python-dev python3-pip virtualenv

配置Virtualenv及Python环境

首先,这个Virtualenv并不是必须的,他的作用就是创建一个“隔离”的Python运行环境。

我想大家都碰到过在一台电脑上同时开发多个应用程序,如果应用A需要Python 2.7,而应用B需要Python 2.6怎么办?有时还会碰到不只是Python版本的不一致,比如Django等软件包版本。

这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。

1、新建独立运行环境,命名为pyblog_env

virtualenv pyblog_env --python=python3.5 --no-site-packages

–python指定Python版本 –no-site-packages不复制系统已安装Python包

2、进入pyblog_env环境

source pyblog_env/bin/activate

这时会发现命令提示符前面多了一个(pyblog_env),变成(pyblog_env)user@hostname:~$ 这种形式,这表示我们已经进入到刚刚创建的虚拟环境。 然后再通过pip安装包,都会安装到这个环境下,不会对系统环境造成影响。 退出虚拟环境命令:deactivate

3、安装项目依赖

pip3 install django PyMySQL mysqlclient Pillow
#如果有需求文件,比如requirements.txt,则执行
pip3 install -r requirements.txt

Django项目配置

1、上传Django项目,我的项目在GitHub。

git clone https://github.com/zytx/pyblog.git

2、配置项目的数据库信息

3、数据迁移

python manage.py makemigrations
python manage.py migrate

4、建立超级用户:

python manage.py createsuperuser

5、收集静态文件:

python manage.py collectstatic

6、测试项目 运行开发服务器看项目能否正常运行

python manage.py runserver 0.0.0.0:8000

访问ip:8000看是否出错

uWSGI 配置

退出刚才进入的虚拟环境,使用命令:deactivate

1、安装uWSGI

pip3 install uwsgi

2、运行测试:

uwsgi --http :8000 --home /home/zytx/pyblog_env/ --chdir /home/zytx/pyblog_env/pyblog -w pyblog.wsgi

–home Virtualenv的虚拟环境目录 –chdir Django项目目录

如果访问IP:8000可以看到项目,就说明Python环境和uWSGI是没有问题的

3、创建配置文件 接下来在项目里新建一个配置文件uwsgi.ini

[uwsgi]
# 项目根目录路径(full path)
chdir           = /home/zytx/pyblog_env/pyblog/
# Django的 wsgi 文件
module          = pyblog.wsgi:application
# virtualenv目录 (full path)
home            = /home/zytx/pyblog_env/

master          = true
# 最大工作进程数(CPU密集型建议设为CPU核心数,IO密集型建议设为CPU核心数的两倍)
processes       = 2
# unix套接字文
socket          = /home/zytx/pyblog_env/pyblog.sock
# socket文件权限
chmod-socket    = 777
# 退出时清空环境
vacuum          = true

4、后台启动uWSGI

uwsgi /home/zytx/pyblog_env/pyblog/uwsgi.ini&

Nginx 配置

1、创建配置文件

sudo vi /etc/nginx/sites-available/pyblog

加入如下内容:

server {
    listen 80;
    server_name www.immrz.com;
    root /home/zytx/pyblog_env/pyblog/;

        location /media/  {
            #如果你的media目录不在root里,可以配置 alias /path/to/your/mysite/media;
        }

        location  /static/ {
            #如果你的static目录不在root里,可以配置 alias /path/to/your/mysite/static;
        }

        location / {
            uwsgi_pass  unix:///home/zytx/pyblog_env/pyblog.sock;
            include uwsgi_params; # the uwsgi_params file you installed
        }
}

软连接到sites-enabled

sudo ln -s /etc/nginx/sites-available/pyblog /etc/nginx/sites
enabled/

2、重新加载Nginx配置

sudo service nginx reload

如果配置无误我们就可以让uWSGI开机运行

#编辑/etc/rc.local,在exit0之前加入
/usr/local/bin/uwsgi --ini /home/zytx/pyblog_env/pyblog/pyblog.uwsgi.ini&

python virtualenv 虚拟环境的使用

虚拟环境是一个将不同项目所需求的依赖分别放在独立的地方的一个工具,它给这些工程创建虚拟的 Python环境。它解决了“项目X依赖于版本1.x,而项目Y需要项目4.x”的两难问题,而且使你的全局 site-packages 目录保持干净和可管理。软件工程师全都是有洁癖的,这就出现下面的神器 virtualenv。

安装 virtualenv

首先,我们用 pip 安装 virtualenv:

$ pip install virtualenv

测试你的安装

$ virtualenv --version

进入我们的项目目录,创建一个独立的 Python 运行环境,命名为 venv。virtualenv venv 将会在当前的目录中创建一个文件夹包含了 Python 可执行文件, 以及 pip 库的一份拷贝,这样就能安装其他包了。虚拟环境的名字(此例中是 venv ) 可以是任意的;若省略名字将会把文件均放在当前目录。

$ cd /data/myproject
$ virtualenv --no-site-packages venv
Using base prefix '/usr/local/.../Python.framework/Versions/3.4'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.

你可以选择使用一个Python解释器(比如python2.7):

$ virtualenv -p /usr/bin/python2.7 venv

命令 virtualenv 就可以创建一个独立的 Python 运行环境,我们还加上了参数 –no-site-packages,这样,已经安装到系统 Python 环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的 Python 运行环境。

进入独立环境

新建的 Python 环境被放到当前目录下的 venv 目录。有了 venv 这个 Python 环境,可以用 source 进入该环境:

$ source venv/bin/activate
(venv) $

以下命令会有相同效果:

$ . ./venv/bin/activate
(venv) $

注意到命令提示符变了,有个 (venv) 前缀,表示当前环境是一个名为 venv 的 Python 环境。

下面就可以正常安装各种第三方扩展包,并运行 python 命令:

(venv) $ pip3 install flask

在 venv 环境下,用 pip 安装的包都被安装到 venv 这个环境下,系统 Python 环境不受任何影响。也就是说,venv 环境是专门针对 myproject 这个应用创建的。

退出独立环境

退出当前的 venv 环境,使用 deactivate 命令:

(venv) $ deactivate
$

此时就回到了正常的环境,现在 pip 或 python 均是在系统 Python 环境下执行。

完全可以针对每个应用创建独立的 Python 运行环境,这样就可以对每个应用的 Python 环境进行隔离。

virtualenv 是如何创建“独立”的 Python 运行环境的呢?原理很简单,就是把系统 Python 复制一份到 virtualenv 的环境,用命令 source venv/bin/activate 进入一个 virtualenv 环境时,virtualenv 会修改相关环境变量,让命令 python 和 pip 均指向当前的 virtualenv 环境。

自动激活环境工具 autoenv

当你 cd 进入一个包含 .env 的目录中,就会 autoenv 自动激活那个环境。

使用 brew 在 Mac OS X上安装它:

$ brew install autoenv

在 Linux 上:

$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc

项目地址:https://github.com/kennethreitz/autoenv/

其它注意

运行带 –no-site-packages 选项的 virtualenv 将不会包括全局安装的包。 这可用于保持包列表干净,以防以后需要访问它。(这在 virtualenv 1.7及之后是默认行为)

使用virtualenv或pyenv构建python虚拟环境

有时候在安装python环境时会遇到一些奇葩的问题,比如有些包无论如何也安装不了,受限于python版本,有些环境部署实在麻烦。因此我建议使用虚拟环境来部署python,比如一个项目就单独建立一个python虚拟环境,与其他项目互不干扰。python虚拟环境工具很多,这里主要介绍virtualenv与pyenv。

virtualenv

virtualenv是跨平台的,linux、mac、windows都可以使用。

install

pip install virtualenv

创建虚拟目录

virtualenv kvenv -p /usr/bin/python2

说明:创建完成后会生成一个kvenv目录,可以加上-p参数指定Python版本。(当然要系统安装了某版本的python才能创建这个版本的虚拟目录)

激活虚拟环境

source kvenv/bin/activate

退出虚拟环境

deactivate

查看python路径

which python # 看python路径是否为新创建的虚拟目录

说明:Mac、linux与windows上安装使用方法一样。

pyenv

pyenv严格来说是python的版本控制器,使用很灵活。

Install

$ brew update
$ brew install peen

配置环境变量

$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

Usage

  • pyenv version # 当前版本
  • pyenv versions # 所有版本
  • pyenv global system # 全局切换
  • pyenv local 2.7.10 # 本地切换
  • pyenv local 3.5.0 –unset # 取消切换

pyenv常用命令

$ pyenv install --list #列出可安装版本
$ pyenv install <version> # 安装对应版本
$ pyenv versions # 显示当前使用的python版本
$ pyenv which python # 显示当前python安装路径
$ pyenv global <version> # 设置默认Python版本
$ pyenv local <version> # 当前路径创建一个.python-version, 以后进入这个目录自动切换为该版本
$ pyenv shell <version> # 当前shell的session中启用某版本,优先级高于global 及 local

安装其他版本python

pyenv install xx.xx.xx (pyenv install 3.4.3) #安装python3.4.3
pyenv rehash   # 安装完以后记得一定要rehash

virtualenv or pyenv ?

如果是项目环境,建议virtualenv,环境独立,也不会有很大的Bug。

如果只是个人学习练习python,可以使用pyenv,切换方便。

使用nginx virtualenv uWSGI配置django运行环境

升级并安装 pip

sudo apt-get update
sudo apt-get install python-pip

安装虚拟环境

sudo pip install virtualenv virtualenvwrapper

加入到环境变量中

当前用户目录下的 Env为虚拟环境存放的目录

echo "export WORKON_HOME=~/Env" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

激活配置

source ~/.bashrc

创建虚拟环境

环境名为:firstsite

在用户当前目录下创建 Django工程

cd ~
django-admin.py startproject firstsite

django 的初始化

cd ~/firstsite
./manage.py migrate
./manage.py createsuperuser

Django静态文件配置

nano firstsite/settings.py
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
./manage.py collectstatic

安装 uWSGI

sudo apt-get install python-dev
sudo pip install uwsgi

测试是否能够正常访问 django 项目

  • http 指定进程端口8080
  • home指定虚拟环境目录
  • chdir指定 项目工程所在目录
uwsgi --http :8080 --home /home/pi/Env/firstsite --chdir /home/pi/firstsite -w firstsite.wsgi

创建 uwsgi 的配置文件

sudo mkdir -p /etc/uwsgi/sites
cd /etc/uwsgi/sites

uwsgi 的配置相关内容(重点)

[uwsgi]
project = firstsite
base = /home/pi

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

启动守护进程

vim /etc/systemd/system/uwsgi.service

[Unit]
Description=uWSGI Emperor service
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

重载守护进程的配置信息

sudo systemctl daemon-reload

系统重启后uwsgi守护进程自动重启

sudo systemctl enable uwsgi

启动uwsgi进程

sudo systemctl start uwsgi

nginx 的安装

sudo apt-get install nginx

nginx的配置

sudo nano /etc/nginx/sites-available/firstsite
server {
    listen 80;
    server_name firstsite.com www.firstsite.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/pi/firstsite;
    }

    location / {
        include         uwsgi_params;
        uwsgi_pass      unix:/home/pi/firstsite/firstsite.sock;
    }
}

nginx配置生效

sudo ln -s /etc/nginx/sites-available/firstsite /etc/nginx/sites-enabled

检查配置

sudo service nginx configtest

重启nginx

sudo service nginx restart

非 debug 模式

非 debug 模式需要重启uwsgi 服务

sudo systemctl restart uwsgi

Python–Virtualenv简明教程

  • virtualenv是一种工具来创建独立的Python环境。

  • virtualenv通过创建独立Python开发环境的工具, 来解决依赖、版本以及间接权限
    问题. 比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7, 版本跨度过大, 导致不兼容使项目无法正在运行, 使用virtualenv可以解决这些问题.

  • virtualenv创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库

1. 安装Virtualenv

使用pip安装Virtualenv, 使用过python的都应该知道pip包管理神器吧, 即使不知道, 网站也有大把的教程, 不过推荐查看官方安装指南

$ pip install virtualenv
//或者由于权限问题使用sudo临时提升权限
$ sudo pip install virtualenv

2. virtualenv基本使用

现在开始使用virtualenv管理python环境

➜  Test git:(master) ✗ virtualenv ENV  #创建一个名为ENV的目录, 并且安装了ENV/bin/python, 创建了lib,include,bin目录,安装了pip
New python executable in 
Installing setuptools, pip...done.
➜  Test git:(master) ✗ cd ENV
➜  ENV git:(master) ✗ ll
drwxr-xr-x  14 andrew_liu  staff  476 12  8 08:49 bin
drwxr-xr-x   3 andrew_liu  staff  102 12  8 08:49 include
drwxr-xr-x   3 andrew_liu  staff  102 12  8 08:49 lib
  • lib,所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/下
  • bin,bin/python是在当前环境是使用的python解释器

如果在命令行中运行virtualenv –system-site-packages ENV, 会继承/usr/lib/python2.7/site-packages下的所有库, 最新版本virtualenv把把访问全局site-packages作为默认行为
default behavior.

2.1 激活virtualenv

#ENV目录下使用如下命令
➜  ENV git:(master) ✗ source ./bin/activate  #激活当前virtualenv
(ENV)➜  ENV git:(master) ✗ #注意终端发生了变化
#使用pip查看当前库
(ENV)➜  ENV git:(master) ✗ pip list
pip (1.5.6)
setuptools (3.6)
wsgiref (0.1.2) #发现在只有这三个
pip freeze  #显示所有依赖
pip freeze > requirement.txt  #生成requirement.txt文件
pip install -r requirement.txt  #根据requirement.txt生成相同的环境

2.2 关闭virtualenv

使用下面命令

$ deactivate

2.3 指定python版本

可以使用-p PYTHON_EXE选项在创建虚拟环境的时候指定python版本

#创建python2.7虚拟环境
➜  Test git:(master) ✗ virtualenv -p /usr/bin/python2.7 ENV2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in ENV2.7/bin/python
Installing setuptools, pip...done.
#创建python3.4虚拟环境
➜  Test git:(master) ✗ virtualenv -p /usr/local/bin/python3.4 ENV3.4
Running virtualenv with interpreter /usr/local/bin/python3.4
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
New python executable in ENV3.4/bin/python3.4
Also creating executable in ENV3.4/bin/python
Installing setuptools, pip...done.

到此已经可以解决python版本冲突问题和python库不同版本的问题

3. 其他

3.1 生成可打包环境

某些特殊需求下,可能没有网络, 我们期望直接打包一个ENV, 可以解压后直接使用, 这时候可以使用virtualenv -relocatable指令将ENV修改为可更改位置的ENV

#对当前已经创建的虚拟环境更改为可迁移
➜  ENV3.4 git:(master) ✗ virtualenv --relocatable ./
Making script ./bin/easy_install relative
Making script ./bin/easy_install-3.4 relative
Making script ./bin/pip relative
Making script ./bin/pip3 relative
Making script ./bin/pip3.4 relative

3.2 获得帮助

$ virtualenv -h

当前的ENV都被修改为相对路径, 可以打包当前目录, 上传到其他位置使用。

这并不能使虚拟环境跨平台使用。

Centos7安装配置Python3.6 Django virtualenv gunicorn supervisor环境

跟着网上的教程走发现行不通阿!好多都是写个大概,而且每人的环境都是有些许差异的,比如说权限问题阿,等等都会造成安装的失败

说明:本教程在你已经拥有Centos7系统,已经安装好nginx服务器,已经安装了Python3.6 Django virtualenv gunicorn supervisor的前提下进行

接下来开始了!

1、新建你的django项目,假设项目名为Hello

 django-admin.py startproject Hello

2、想好你需要的端口号,假设端口号为8001(下面的端口号均以8001来举例,你可以换成你所需要的端口号),接下来启动服务器看看能不能运行,分两种情况

2.1 如果你只是想在本地运行则

python manage.py runserver127.0.0.1:8001

2.2 如果你想要外网也可以访问则

python manage.py runserver0.0.0.0:8001

3、接下来在浏览器中输入 “服务器ip:8001” ,比如我服务器的公网IP为 192.163.189.166 则输入192.163.189.166:8001,可能会出现三种情况!

3.1 成功运行

3.2 出现 DisallowedHost at / Invalid HTTP_HOST header: ‘10.211.55.6:8001’. You may need to add u’10.211.55.6′ to ALLOWED_HOSTS. 类似错误,解决方法:
进入项目目录下的Hello目录(注意项目目录名是和该名称相同的,此Hello和manage.py同级打开setting.py将ALLOWED_HOSTS = []改为ALLOWED_HOSTS = [‘*’]

3.3 如果在确保地址输入正确,端口也正确的前提下浏览器出现了 Unable to connect 错误,那么很可能是你的Centos7没有开启8001端口号的原因,解决方法

开启端口号

firewall-cmd --zone=public --add-port=8001/tcp --permanent (--permanent意思是永久生效,重启后继续生效)

重启防火墙

firewall-cmd --reload

此时再访问浏览器,如果还是访问不了,那可能是我没遇到的情况,还请自行搜索解决哦

4、配置virtualenv gunicorn

4.1 在项目根目录下输入指令 virtualenv venv (venv可以是其他名字了)

4.2 虚拟环境生成后接着要在虚拟环境中安装django 和 gunicorn 了

pip install django
pip install gunicorn

4.3 在项目根目录下创建gunicorn.conf 用来配置gunicorn,我的配置为

workers = 4
bind = '0.0.0.0:8088'

5、配置supervisor

supervisor的配置文件一般在/etc/supervisord.conf

5.1 vim /etc/supervisord.conf

5.2 在末尾加入

[program:hello]
command=/项目路径/venv/bin/gunicorn -c /项目路径/gunicorn.conf Hello.wsgi:application
directory=/项目路径
autostart=true
autorestart=true
stdout_logfile=/项目路径/logs/gunicorn.log
stderr_logfile=/项目路径/logs/gunicorn.err  

5.3 重启 supervisor

unlink /tmp/supervisor.sock
supervisord -c /etc/supervisord.conf

6、配置nignx

6.1 打开nignx.conf

6.2 在合适地方加入

location /  {
     proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
     proxy_set_header Host $http_host;
     proxy_redirect off;
     proxy_pass http://192.163.189.166:8001;   #http://外网ip:8001,如果是本机访问则
http://127.0.0.1:8001
              }

6.3 重启nginx

systemctl restart nginx

7、好啦,接下来在浏览器中输入 http://192.163.189.166:8001 应该能访问咯。

使用python的pyenv工具管理python virtualenv虚拟环境

pyenv安装

1. 安装依赖包

yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel bzip2-devel readline-devel

2. 安装pyenv

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

3. 设置环境变量

echo >> .bash_profile << EOF
# pyenv settings
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
EOF

4. 使之生效

. .bash_profile或者source .bash_profile

这时候pyenv就可以使用了

pyenv使用指南

1、pyenv versions查看系统的上安装的Python版本。

其中前面的*表示当前工作目录正在使用的版本,其中 的 system表示系统自带的 Python 版本:

$ pyenv versions
* system (set by /Users/yulongjun/.pyenv/version)

2、pyenv install 安装其他版本的Python。
例如安装3.6.1和2.7.13版本:

$ pyenv install 3.6.1   # 安装3.6.1版本的Python
$ pyenv install 2.7.13  # 安装2.7.13版本的Python
$ pyenv versions        # 可以看到3个版本,system为系统自带的版本
* system (set by /usr/local/var/pyenv/version)
  2.7.13
  3.6.1
$ cd                   # 到家目录
$ mkdir Python36       # 创建Python3.6的工作目录
$ cd Python36
$ pyenv local 3.6.1    # 使当前工作目录使用Python3.6.1版本
$ python -V            # 查看一下当前目录用Python的版本,确实是3.6.1
Python3.6.1
$ pip -V               # 查看一下pip版本,是3.6的pip
pip 9.0.1 from /usr/local/var/pyenv/versions/3.6.1/lib/python3.6/site-packages 
$ cd                   # 回到家目录
$ mkdir Python27       # 创建python2.7的工作目录
$ cd Python27
$ pyenv local 2.7.13   # 使当前工作目录使用Python2.7.13版本
$ python -V            # 查看一下当前目录用Python的版本,确实是2.7.13
Python 2.7.13
$ pip -V               # 查看一下pip版本,是2.7的pip
pip 9.0.1 from /usr/local/var/pyenv/versions/2.7.13/lib/python2.7/site-packages (python 2.7)

pyenv-virtualenv的使用方法

pyenv-virtualenv是用来创建一个干净的虚拟Python环境的命令,通常在创建干净的新项目时候使用。使用方法如下:

1、创建虚拟环境–pyenv virtualenv 版本号 虚拟环境名。

$ pyenv virtualenv 3.6.1 venv-3.6.1

2、创建项目,让项目使用干净的Python3.6.1的虚拟环境:

[yulongjun@yulongjun ~]$ mkdir Learning-Python3
[yulongjun@yulongjun ~]$ cd Learning-Python3/
[yulongjun@yulongjun Learning-Python3]$ pyenv local venv-3.6.1
(venv-3.6.1) [yulongjun@yulongjun Learning-Python3]$ cd ..
[yulongjun@yulongjun ~]$ cd Learning-Python3/
(venv-3.6.1) [yulongjun@yulongjun Learning-Python3]$

我们会发现:只要我们进入Learning-Python3目录,就会自动激活virtualenv,退出Learning-Python3目录,就会关闭virtualenv。

如果要关闭自动激活,可以运行命令pyenv deactivate,要重新启用的话,运行pyenv activate 虚拟环境名。

ubuntu系统安装virtualenv python版本管理工具

virtualenv的官网在http://www.virtualenv.org/en/latest/
如其官方所说,virtualenv 是一个创建独立python环境的工具。其要解决的最基本问题就是库的依赖和版本,以及间接权限(indirectly permisions,没太明白)。

安装virtualenv,在默认的python2下的pip就行:

sudo apt-get install python-virtualenv

创建虚拟环境:

virtualenv -p /usr/bin/python3 py3env

激活虚拟环境:

source py3env/bin/activate

你会注意到shell的提示符行前多了(py3env)字样,这样你就可以放心的使用python3做开发了。先下载个三方库试试吧

pip install httplib2

大功告成了!

如果要退出python3虚拟环境,输入命令

deactivate

使用virtualenv创建一个虚拟,多版本和独立的python开发环境

Virtualenv是一个用来创建虚拟的python开发环境的工具,可以使用它创建多个相互隔离的python环境而不需要担心影响到其它的python项目环境。

它可以为每个python项目创建独立的环境。它实际上没有单独的为每个python项目安装python副本,而是提供了一个方法来隔离各自的项目环境。

验证Virtualenv是否已经安装

执行如下命令来验证机器是否已经安装有Virtualenv:

virtualenv --version

如果看到输出版本号,如1.6.1,则表明已经安装有virtualenv。

安装virtualenv

有多种方法来安装virtualenv。
ubuntu和debian安装:

$ sudo apt-get install python-virtualenv

使用easy_install安装:

$ sudo easy_install virtualenv

使用pip安装

$ sudo pip install virtualenv

配置和使用Virtualenv

一旦安装好virtualenv,就可以开始创建自己的python环境了。
首先为隔离环境创建一个目录

mkdir ~/virtualenvironment

再为你的应用创建一个完整干净的python副本目录

virtualenv -p /usr/bin/python2.7 ~/virtualenvironment/my_new_app

其中-p为指定的python版本路径。
进到项目目录,激活你的虚拟环境

cd ~/virtualenvironment/my_new_app/bin

激活虚拟环境

source activate

现在注意到你已经进入虚拟环境了,现在你使用pip或easy_install安装的python包都会保存到my_new_app/lib/python2.7/site-packages目录
要退出虚拟环境,只需要键入”deactivate”

Virtualenv如何实现虚拟环境的

安装在你项目目录的python包不会影响到全局的python安装目录

Virtualenv不会创建每一个python文件来实现一个新的python环境

为了节省空间,使用了软链接来链接到全局环境的文件中并能加速虚拟环境创建

因此,必须已经有一个python环境安装在你的主机上

在你的Virtualenv安装一个包

执行如下命令:

pip install flask