须要深刻理解Pyramid(Pylons也同样)项目结构,至少须要了解Paste项目的一些必要信息,也要对setuptools有必定了解,不然不少东西都会知其然而不知其因此然。python
咱们先简单看看一个基本Pyramid项目中各个文件的做用与基本内容。服务器
1、development.ini配置文件结构 development.ini是一个PasteDeploy配置文件,主要为使用paster serve运行的应用提供配置参数。咱们安装development.ini中配置段落逐项看一下其具体的做用。app
[server:main] use = egg:Paste#http host = 0.0.0.0 port = 6543函数
这一段定义了WSGI服务器的一些基本信息。 use = egg:Paste#http代表使用Paste中的http服务器来为应用提供服务。 host = 0.0.0.0表示任何IP地址均可以访问这个应用 port = 6543表示服务端口是6543 在[server:main]里面还能够配置http服务器线程池等各类参数,具体能够查看PasteDeplay。工具
[pipeline:main] pipeline = egg:WebError#evalerror MyProject 这也是PasteDeplay中定义的格式。这一段定义了paster serve命令运行的应用(这里是一个管道)。单元测试
[app:MyProject] use = egg:MyProject reload_templates = true debug_authorization = false debug_notfound = false debug_routematch = false debug_templates = true default_locale_name = en测试
这一段就是本应用的配置参数。注意,这里的名字MyProject与pineline中定义的名字一致。 在本段配置参数中,use = egg:MyProject 这里省略了#main(即use = egg:MyProject#main)。这个定义指明了本应用的入口程序,这里是MyProject这个egg包中的main函数(能够查看myproject目录下的__init__.py文件,里面就定义了这个main函数)。 另外还有reload_templates、debug_templates也须要注意一下,这主要是在开发中调试方便使用的,在应用部署时记得设成false。网站
development.ini中还有一大段python 标准log信息的配置,都懂得,不解释。ui
2、production.ini Pyramid还加了一个产品部署时用的配置文件production.ini,基本等同与development.ini。主要区别是去掉了WebError交互调试界面,以及一些调试开关。线程
3、MANIFEST.in文件 这是distutils这个打包工具的配置文件(setuptools是distutils的一个扩展)。主要在里面列出了一些须要打进egg包的非python文件。
4、setup.py 这是运行setuptools所须要的启动文件。咱们在单元测试、打包、分发等工做时常常须要使用它。这基本已是python世界里面的事实标准了。 在这个文件里面,咱们须要注意的配置项以下: name=’MyProject’ 项目名,包名 version=’0.0’ 版本,这个常常须要改动 packages=find_packages() 打包时须要打到包中的内容,默认全部 zip_safe=False 指定该包是否可以不解压就能被引用 install_requires=requires, tests_require=requires 指定了本项目的依赖关系,须要什么包才能安装、测试 test_suite="myproject" 指定了单元测试搜索路径 entry_points 定义了本项目的入口。
定义好咱们就可使用 python setup.py sdist 这样的命令将整个项目打包。不一样的打包命令及其区别参见setuptools
5、setup.cfg 这个文件是setuptools的参数配置文件,主要配置了单元测试、国际化等方面的一些配置。 [nosetests] match = ^test nocapture = 1 cover-package = myproject with-coverage = 1 cover-erase = 1 这一段是单元测试的配置信息(不过貌似跟python setup.py test命令无关,目前还不清楚在什么地方用到。 其余的信息都是国际化支持的配置,这跟标准python中定义的基本相同。
本文提到的示例材料均源于Pyramid官方网站