python学习日志(十)

本文介绍使用Python进行Web开发的基础知识,包括Web应用的工作原理、WSGI接口的应用及其实现,同时提供将Python脚本转换为exe文件的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

用Python进行web开发

一、web应用的本质是:
  1. 浏览器发送一个HTTP请求;

  2. 服务器收到请求,生成一个HTML文档;

  3. 服务器把HTML文档作为HTTP响应的Body发送给浏览器;

  4. 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。(2-4都是http的协议规范)

简单实现web方式:1,把HTML文件保存好。2.用一个现成的Http服务器软件接收请求。3从文件中读取HTML文档,在浏览器中显示。 Apache、Nginx、Lighttpd等这些常见的静态服务器就是干这件事情的。
 
(1)如果要动态实现HTML文档生成,就需要自己实现上述步骤。接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活。所以,底层代码由专门的服务器软件实现。我们只要用Python生成HTML文档,其他直接调用协议接口。这个接口就是WSGI:Web Server Gateway Interface。
 
(2)WSGI:Web Server Gateway Interface

application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:

  • environ:一个包含所有HTTP请求信息的dict对象;

  • start_response:一个发送HTTP响应的函数。

application()函数中,调用:

start_response('200 OK', [('Content-Type', 'text/html')])

就发送了HTTP响应的Header,注意Header只能发送一次,也就是只能调用一次start_response()函数。start_response()函数接收两个参数,一个是HTTP响应码,一个是一组list表示的HTTP Header,每个Header用一个包含两个strtuple表示。

通常情况下,都应该把Content-Type头发送给浏览器。其他很多常用的HTTP Header也应该发送。

然后,函数的返回值'<h1>Hello, web!</h1>'将作为HTTP响应的Body发送给浏览器。

有了WSGI,我们关心的就是如何从environ这个dict对象拿到HTTP请求信息,然后构造HTML,通过start_response()发送Header,最后返回Body。

整个application()函数本身没有涉及到任何解析HTTP的部分,也就是说,底层代码不需要我们自己编写,我们只负责在更高层次上考虑如何响应请求就可以了。

不过,等等,这个application()函数怎么调用?如果我们自己调用,两个参数environstart_response我们没法提供,返回的str也没法发给浏览器。

所以application()函数必须由WSGI服务器来调用。有很多符合WSGI规范的服务器,我们可以挑选一个来用。但是现在,我们只想尽快测试一下我们编写的application()函数真的可以把HTML输出到浏览器,所以,要赶紧找一个最简单的WSGI服务器,把我们的Web应用程序跑起来。

好消息是Python内置了一个WSGI服务器,这个模块叫wsgiref,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。

(3)运行wsgi服务

我们先编写hello.py,实现Web应用程序的WSGI处理函数:

# hello.py

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return '<h1>Hello, web!</h1>'

然后,再编写一个server.py,负责启动WSGI服务器,加载application()函数:

# server.py
# 从wsgiref模块导入:
from wsgiref.simple_server import make_server
# 导入我们自己编写的application函数:
from hello import application

# 创建一个服务器,IP地址为空,端口是8000,处理函数是application:
httpd = make_server('', 8000, application)
print "Serving HTTP on port 8000..."
# 开始监听HTTP请求:
httpd.serve_forever()

确保以上两个文件在同一个目录下,然后在命令行输入python server.py来启动WSGI服务器。

 

二、打包py文件,生成exe可执行文件

以上py编写完成,可以用pyexe或pyinstaller工具来打包生成可执行文件exe:

 

如何使用PyInstaller将Python代码转换成exe文件

144
作者  Gavin吃西瓜 
2016.11.26 17:30* 字数 464 阅读 1329评论 0喜欢 3

最近在琢磨将写好的.py脚本转换成.exe可执行文件,特意记录一下。

安装PyInstaller

前提是安装了pip(不会的朋友请自行搜索),在CMD中输入pip install PyInstaller,一键式安装

Pyinstall1.jpguploading.4e448015.gif转存失败重新上传取消 Pyinstall1.jpg uploading.4e448015.gif转存失败 重新上传 取消 Pyinstall1.jpguploading.4e448015.gif转存失败重新上传取消

安装好后,我们可以在Python的Script目录下成功发现”pyinstaller.exe”文件。
TIPS:安装完后,在使用过程中可能会出现如下报错[failedto create process],该问题的原因是我们的Python安装路径中有空格,如:C:\Program Files (x86)\Python34\Scripts。这时,有两中解决办法:第一,重新安装Python,将其放置与没有空格的路径(听上去都觉得麻烦);第二,将Python/Script目录下的pyinstaller-script.py里的路径加上引号,如下图为加上引号后的效果

Pyinstall2.jpguploading.4e448015.gif转存失败重新上传取消 Pyinstall2.jpg uploading.4e448015.gif转存失败 重新上传 取消 Pyinstall2.jpguploading.4e448015.gif转存失败重新上传取消

使用PyInstaller

提前写好需要转换的Python脚本,并在CMD中输入命令格式为:
pyinstaller [参数] [脚本路径] ,
该参数包括:
-F, --onefile Py代码只有一个文件
-D, --onedir Py代码放在一个目录中(默认是这个)
-K, --tk 包含TCL/TK
-d, --debug 生成debug模式的exe文件
-w, --windowed, --noconsole 窗体exe文件(WindowsOnly)
-c, --nowindowed, --console 控制台exe文件(WindowsOnly)
-X, --upx 使用upx压缩exe文件
-o DIR, --out=DIR 设置spec文件输出的目录,默认在PyInstaller同目录
-v FILE, --version=FILE 加入版本信息文件
如下面栗子:

Pyinstall3.jpguploading.4e448015.gif转存失败重新上传取消 Pyinstall3.jpg uploading.4e448015.gif转存失败 重新上传 取消 Pyinstall3.jpguploading.4e448015.gif转存失败重新上传取消

执行该代码后,我们能在生成的dist文件下找到我们的exe文件,该文件即为我们希望得到的目标exe文件。

Pyinstall4.jpguploading.4e448015.gif转存失败重新上传取消 Pyinstall4.jpg uploading.4e448015.gif转存失败 重新上传 取消 Pyinstall4.jpguploading.4e448015.gif转存失败重新上传取消
 

 

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值