Flask框架学习笔记(一)安装篇(windows安装与centos安装)


Posted in Python onJune 25, 2014

Flask 依赖于两个外部库: Werkzeug  和  Jinja2  。 Werkzeug 是一个 WSGI (在 web 应用和多种服务器之间开发和部署的标准 Python 接口) 的工具集,Jinja2 负责渲染模板。

一、安装

Flask安装的前提条件

1.已安装python2.x版本

2.已安装easy_install

在安装flask之前,你必须要先安装python和easy_install,easy_install只支持pyhon2.x版本不支持python3.x版本,所以你在安装python的时候最好选择python2.x。这里是2.7.

python2.7的安装很简单,本站内有很多篇文章介绍,这里不加描述,路径任意,安装完成加入环境变量便可。

win7 :

配置环境变量

方法一:(计算机-》属性--》高级系统设置--》环境变量--》添加python安装路径)

方法二:cmd下

设置:set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

查看:echo %PATH%

easy_install安装:

下载地址:http://pypi.python.org/pypi/setuptools

windows版本的只会有一个 ez_setup.py 脚本,下载下来放在D:\Python\python2.7目录下执行,则会自动安装easy_install,目录:D:\Python\python2.7\Scripts

easy_install加入环境变量:路径为D:\Python\python2.7\Scripts

安装好这两个后则开始安装flask

安装 virtualenv,这个主要是用来做解释器环境隔离的,避免同一机器上的多个python或者多个python的库依赖

然后配置虚拟环境

然后cd到myvir目录的Scripts下

输入activate.bat,就进入了虚拟环境了,然后输入easy_install Flask安装

测试结果,是否安装成功:

在pycharm软件中,要创建flask项目,然后选择myvir中的python.exe运行脚本。

创建简单hello world脚本,文件名为test1.py:

from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello_world():
return "Hello World~~~"
if __name__ == '__main__':
app.run()

然后点击运行则会显示

可以通过给出的网址进行访问。注意:此时一直处于运行状态,完成后要关闭该端口则点击pycharm中的Run->stop。
默认只有本地可以访问,端口为5000.

最后一行修改为 app.run('0.0.0.0', 12345),就可以让其它人访问了

解析:

from flask import Flask

导入 Flask 类

app = Flask(__name__)

实例化对象 app ,参数为应用模块或包的名称,这里 __name__ 指的是 __main__ 主程序。这个参数是必需的,这样  Flask  就可以知道在哪里找

到模板和静态文件等东西。

@app.route("/")

使用 route() 装饰器告诉 Flask 触发函数的 URL 。可以自定义,如 @app.route("/test1.py"),访问时则后面要接文件名

def hello():

    return "Hello World!"

定义的函数,用来生成相关联的 URL ,并返回需要在用户浏览器中显示的信息。

app.run()

运行服务器应用,运行后默认只有本地可以访问,如需让其他连接,可以指定 host ,如: app.run(host='0.0.0.0')

默认使用的端口是: 5000 ,可以使用自定义的主机和端口: app.run(host="0.0.0.0",port=8000)

可外部访问的服务器

如果你运行服务器,你会注意到它只能从你自己的计算机上访问,网络中其它任何的地方都不能访问。这是在默认情况,因为在调试模式,用户可以在你的计算机上执行任意 Python 代码。

如果你 禁用了  debug  或信任你所在网络的用户 ,你可以简单修改调用  run()  的方法使你的服务器公开可用,如下:

app.run(host='0.0.0.0')

这会让操作系统监听所有公开的IP。

二、windows下安装3.3版本的:

注意:如果默认已经安装了2.7的,想安装3.3的,则必须进入到3.3安装目录内,然后运行python ez_setup.py(ez_setup.py下载地址:https://pypi.python.org/pypi/setuptools)。

然后进入到刚生成的scripts目录下,执行下面的命令安装virtualenv。

同样,产生虚拟环境的时候也要用3.3的virtualenv,否则报错。

然后cd到myvir目录的Scripts下

输入activate.bat,就进入了虚拟环境了,然后输入easy_install Flask安装

三、centos6.4安装python2.6的flask框架::

安装执行命令:

yum install openssh-server
python --version(查看是否是符合的版本)
yum install python-setuptools
easy_install virtualenv(系统默认安装了easy_install2.6)
virtualenv

安装完毕,你可以立即打开 shell 然后创建你自己的环境。

1.全局(不推荐):

easy_install Flask                全局安装,下面有局部安装的方法。

测试代码:

from flask import Flask 
app = Flask(__name__) 
@app.route('/') 
def hello_world(): 
return "Hello World!" 
if __name__ == '__main__': 
app.run(host='0.0.0.0')

文件存放的位置没有要求,在任何地方都可以执行。( 全局安装)
从另外的服务器访问:http://IP:5000的方式
然后其他的,比如模板渲染则同样只需要在你的项目中创建templates文件夹的方式实现。

2.局部环境:

我通常创建一个项目文件夹,并在其下创建一个 venv  文件夹

[root@localhost opt]# mkdir myweb

[root@localhost opt]#cd myweb

[root@localhost myweb]# virtualenv venv(注意:这里的venv目录名字是自己设定的)
New python executable in venv/bin/python
Installing setuptools, pip...done.

现在,无论何时你想在某个项目上工作,只需要激活相应的环境。

好处:

所有东西都已经安装在这个虚拟环境中了,因此你自已主要的Python安装环境则不会受影响(可以同时支持几个环境的使用)。附加的一个好处是,用这种方式来安装时不需要root管理员权限。
迁移之后,执行文件会因为改变路径无法使用,还是需要重新构建环境。

在 OS X 和 Linux 上,执行如下操作:

[root@localhost venv]# . bin/activate   #激活(每次运行都有是激活状态)
(venv)[root@localhost venv]#

下面的操作适用 Windows:

$ venv\scripts\activate

无论通过哪种方式,你现在应该已经激活了 virtualenv(注意你的 shell 提示符显示的是活动的环境)。

现在你只需要键入以下的命令来激活 virtualenv 中的 Flask:

(venv)[root@localhost venv]# pip install Flask             #只需开始执行一次
......
Successfully installed Flask Werkzeug Jinja2 itsdangerous markupsafe
Cleaning up...

几秒钟后,一切都搞定了。
可能会出错:

SSLError: The read operation timed out

Storing debug log for failure in /root/.pip/pip.log

这种错误的话只要重新执行该命令就可以了。

执行. activate.csh可以退出 virtualenv(不知道是不是正确的方式,但确实可以退出)

四、centos下安装python3.3的flask框架:

要是3.3的easy_install:

[root@localhost python3.3.3]# wget https://bootstrap.pypa.io/ez_setup.py
[root@localhost python3.3.3]# python3.3 ez_setup.py  (一定要指定3.3的执行文件,不然会使用系统的默认python)
[root@localhost python3.3.3]# easy_install

 此时补齐可看到版本

easy_install      easy_install-2.6  easy_install-3.3

然后后面的安装跟2.6的步骤是一样的,只是安装的时候一定要指定确定的命令(3.3的还是2.6的)
安装完成后,两种版本互补影响,都有自己的虚拟环境,执行自己环境内的脚本。
之前安装成功,后面在另外一台服务器上安装则报错:

[root@www python3.3]# python3.3 ez_setup.py 
Extracting in /tmp/tmpj462kb
Traceback (most recent call last):
 File "ez_setup.py", line 332, in <module>
  sys.exit(main())
 File "ez_setup.py", line 329, in main
  return _install(archive, _build_install_args(options))
 File "ez_setup.py", line 51, in _install
  with archive_context(archive_filename):
 File "/usr/local/python3.3/lib/python3.3/contextlib.py", line 48, in __enter__
  return next(self.gen)
 File "ez_setup.py", line 101, in archive_context
  archive.extractall()
 File "/usr/local/python3.3/lib/python3.3/zipfile.py", line 1232, in extractall
  self.extract(zipinfo, path, pwd)
 File "/usr/local/python3.3/lib/python3.3/zipfile.py", line 1220, in extract
  return self._extract_member(member, path, pwd)
 File "/usr/local/python3.3/lib/python3.3/zipfile.py", line 1282, in _extract_member
  with self.open(member, pwd=pwd) as source, \
 File "/usr/local/python3.3/lib/python3.3/zipfile.py", line 1202, in open
  close_fileobj=not self._filePassed)
 File "/usr/local/python3.3/lib/python3.3/zipfile.py", line 649, in __init__
  self._decompressor = _get_decompressor(self._compress_type)
 File "/usr/local/python3.3/lib/python3.3/zipfile.py", line 612, in _get_decompressor
  return zlib.decompressobj(-15)
AttributeError: 'NoneType' object has no attribute 'decompressobj'
[root@www python3.3]#

缺少相关模块:
网上是通过下面的方式解决:

yum install build-essential libssl-dev libxml2-dev libbz2-dev libjpeg62-dev libreadline5-dev wv poppler-utils zlib1g zlib1g-dev zlibc libghc6-zlib-dev zlibc

但是我重新安装了一次python再次运行就没错误了。

但是安装virtualenv的时候又出问题了:

[root@www python3.3]# easy_install-3.3 virtualenv
Searching for virtualenv
Reading https://pypi.python.org/simple/virtualenv/
Download error on https://pypi.python.org/simple/virtualenv/: unknown url type: https -- Some packages may not be found!
Couldn't find index page for 'virtualenv' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.python.org/simple/
Download error on https://pypi.python.org/simple/: unknown url type: https -- Some packages may not be found!
No local packages or download links found for virtualenv
error: Could not find suitable distribution for Requirement.parse('virtualenv')
[root@www python3.3]#

后来直接找到提示的路径(https://pypi.python.org/simple/virtualenv/)下载,也可以安装:

[root@www python3.3]# wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.9.tar.gz#md5=e03b76752b8ce7eee67c6298414cac79
[root@www python3.3]# ls
bin ez_setup.py include lib setuptools-5.2.zip share virtualenv-1.9.tar.gz
[root@www python3.3]# easy_install-3.3 virtualenv-1.9.tar.gz
Processing virtualenv-1.9.tar.gz
Writing /tmp/easy_install-quwwll/virtualenv-1.9/setup.cfg
Running virtualenv-1.9/setup.py -q bdist_egg --dist-dir /tmp/easy_install-quwwll/virtualenv-1.9/egg-dist-tmp-xhue8r
warning: no previously-included files matching '*' found under directory 'docs/_templates'
warning: no previously-included files matching '*' found under directory 'docs/_build'
Adding virtualenv 1.9 to easy-install.pth file
Installing virtualenv script to /usr/local/python3.3/bin
Installing virtualenv-3.3 script to /usr/local/python3.3/bin
Installed /usr/local/python3.3/lib/python3.3/site-packages/virtualenv-1.9-py3.3.egg
Processing dependencies for virtualenv==1.9
Finished processing dependencies for virtualenv==1.9
[root@www python3.3]# vi
vi       vigr      virtualenv   virtualenv-3.3
view      vipw      virtualenv-2.6 visudo

安装Flask的时候出现问题:

AttributeError: 'module' object has no attribute 'HTTPSConnection'

其实归根结底都是python没有正常安装,缺失了一些模块造成的,所以安装的时候一定要注意,如果没装好,那就重装吧。
安装python之前要安装所有的开发工具包

[root@lujie ~]# yum groupinstall "Development tools"

[root@lujie ~]#yum install zlib-devel bzip2-devel openssl-devel ncurses-devel

五、总结安装:

easy_install virtualenv和pip install virtualenv的区别?
easy_insall的作用和perl中的cpan, ruby中的gem类似,都提供了在线一键安装模块的傻瓜方便方式,而pip是easy_install的改进版, 提供更好的提示信息,删除package等功能。老版本的python中只有easy_install, 没有pip。
easy_install的用法:

1) 安装一个包

$ easy_install <package_name>

$ easy_install "<package_name>==<version>"

2) 升级一个包

$ easy_install -U "<package_name>>=<version>"

pip的用法

1) 安装一个包

$ pip install <package_name>

$ pip install <package_name>==<version>

2) 升级一个包 (如果不提供version号,升级到最新版本)

$ pip install --upgrade <package_name>>=<version>

3)删除一个包

$ pip uninstall <package_name>
Python 相关文章推荐
深入探究Python中变量的拷贝和作用域问题
May 05 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
对于Python中RawString的理解介绍
Jul 07 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
Dec 05 Python
python 多线程重启方法
Feb 18 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
python3使用matplotlib绘制条形图
Mar 25 Python
Python Pandas中根据列的值选取多行数据
Jul 08 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
python中time包实例详解
Feb 02 Python
Python中文编码那些事
Jun 25 #Python
教你如何在Django 1.6中正确使用 Signal
Jun 22 #Python
python抓取网页时字符集转换问题处理方案分享
Jun 19 #Python
python在linux中输出带颜色的文字的方法
Jun 19 #Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 #Python
win7 下搭建sublime的python开发环境的配置方法
Jun 18 #Python
Python写的贪吃蛇游戏例子
Jun 16 #Python
You might like
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
PHP在线生成二维码代码(google api)
2013/06/03 PHP
在PHP中使用redis
2013/11/04 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP 微信支付类 demo
2015/11/30 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
Python rstrip()方法实例详解
2018/11/11 Python
Python中函数参数匹配模型详解
2019/06/09 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
基于python检查矩阵计算结果
2020/05/21 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
经济系大学生求职信
2013/10/01 职场文书
工程部主管岗位职责
2013/11/17 职场文书
大学生专科毕业生自我评价
2013/11/17 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL