文件名称:执行环境-三零卫士工业防火墙系统技术白皮书
文件大小:4.16MB
文件格式:PDF
更新时间:2024-06-29 06:07:54
Web2py manual chinese
4.19 第三方模块 web2py是用Python编写的,所以它可以导入和使用任何 Python模块,包括第三方模块,它 只需要能够找到它们。如同任何 Python应用,模块可以安装在官方Python的"site- packages" 目录,然后在代码里它们可以从任意地方导入。 "site-packages"目录中的模块,顾名思义是站点级封装,需要site-packages的应用是不 可移植的,除非这些模块是单独安装的,在"site-packages" 中有模块的优势是多个应用可 以共享它们。让我们考虑一下,例如称为“matplotlib”的绘图软件包,可以采用PEAK easy_install命令从shell安装它: 1 easy_install py-matplotlib 然后就可以使用如下代码将其导入到任何模型/控制器/视图: 1 import matplotlib web2py源代码发布和Windows二进制发布包在*文件夹中有 site-packages, Mac二进制 发布版在如下文件夹中有 site-packages文件夹: web2py.app/Contents/Resources/site-packages 使用site-packages的问题是,难以在同一时间使用不同版本的单个模块,例如可以有两个 应用,但每一个使用不同版本的同一个文件。在这个例子中,sys.path不能被改变,因为 它会影响这两个应用。 对于这种情况,web2py提供了另一种方式来导入模块,这样的方式没有改变全局 sys.path:将它们放置在应用的"modules"文件夹中,一个附带的好处是,该模块将自动与 应用一起复制和发布。 一旦模块“mymodule.py”被放置到应用的"modules/"文件夹,在 web2py应用内,可以从任 何地方导入它(无需改变 sys.path): 1 import mymodule 4.20 执行环境 虽然这里所讨论的一切工作正常,我们推荐使用在第12章介绍的组件来构建应用。 web2py模型和控制器文件不是 Python模块,因而不能使用Python的 import语句导入它们。 这样做的原因是,模型和控制器设计在一个预先准备好的环境中执行,该环境已预先填充了 web2py全局对象(请求、响应、会话、缓存和T)及帮助对象函数。这是必要的,因为 Python是一种静态(词汇)范围内的语言,而 web2py环境是动态创建的。web2py提供 exec_environment函数让你直接访问模型和控制器,exec_environment创建了一个 web2py 执行环境,加载文件到它里面,然后返回一个包含环境的Storage存储对象。Storage对象 也可作为一个命名空间机制,在执行环境中执行任何 Python文件可以使用 exec_environment加载,exec_environment的用途包括: 从其它应用访问数据(模型)。 从其它模型或控制器访问全局变量。