pyramid 项目组成学习
1.前言部分
前面我们学习了用cookiecutter 创建了一个项目myproject,一步一步完成了整个项目的初步创建,这一章我们继续学习整个项目的各级目录部分。
2.项目的基本结构
myproject
├── .coveragerc
├── .gitignore
├── CHANGES.txt
├── MANIFEST.in
├── myproject
│ ├── __init__.py
│ ├── routes.py
│ ├── static
│ │ ├── pyramid-16x16.png
│ │ ├── pyramid.png
│ │ └── theme.css
│ ├── templates
│ │ ├── 404.jinja2
│ │ ├── layout.jinja2
│ │ └── mytemplate.jinja2
│ ├── tests.py
│ └── views
│ ├── __init__.py
│ ├── default.py
│ └── notfound.py
├── README.txt
├── development.ini
├── production.ini
├── pytest.ini
└── setup.py
3.基本说明
1.coveragerc 在运行测试时配置覆盖 :
[run]
source = myproject
omit = myproject/test*
2.gitignore 告诉git从源代码版本控制中忽略哪些文件和目录,使用git控制版本时用到
*.egg
*.egg-info
*.pyc
*$py.class
*~
.coverage
coverage.xml
build/
dist/
.tox/
nosetests.xml
env*/
tmp/
Data.fs*
*.sublime-project
*.sublime-workspace
.*.sw?
.sw?
.DS_Store
coverage
test
3.CHANGES.txt描述您对应用程序所做的更改。就是一个版本更改记录
0.0
---
- Initial version.
-
4.MANIFEST.in是 支持哪些文件格式
include *.txt *.ini *.cfg *.rst
recursive-include myproject *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
5.README.txt一般描述应用程序。描述了当前文件的创建和虚拟环境的创建
myproject
=========
Getting Started
---------------
- Change directory into your newly created project.
cd myproject
- Create a Python virtual environment.
python3 -m venv env
- Upgrade packaging tools.
env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
env/bin/pip install -e ".[testing]"
- Run your project's tests.
env/bin/pytest
- Run your project.
6.development.ini是一个开发环境的配置文件,包含了开发环境的端口,日志,数据库连接地址配置。
###
# app configuration
# https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
###
[app:main]
use = egg:myproject
pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
pyramid_debugtoolbar
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
debugtoolbar.hosts = 113.106.88.16
###
# wsgi server configuration
###
[server:main]
use = egg:waitress#main
listen = 0.0.0.0:48888
###
# logging configuration
# https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
###
[loggers]
keys = root, myproject
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = INFO
handlers = console
[logger_myproject]
level = DEBUG
handlers =
qualname = myproject
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
7.production.ini是一个PasteDeploy配置文件,可用于在生产配置中执行您的应用程序。
如同上面的development.ini用于正式开发环境,提高了日志级别,提升了运行的效率
8.pytest.ini 是用于运行测试的配置文件。
测试环境的py文件配置
9.setup.py 文件是Setuptools安装文件清单和执行安装顺序,用于定义安装软件包和测试依赖项以及分发应用程序的要求
import os
from setuptools import setup, find_packages
here = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(here, 'README.txt')) as f:
README = f.read()
with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
# 定义安装依赖软件包
requires = [
'plaster_pastedeploy',
'pyramid',
'pyramid_jinja2',
'pyramid_debugtoolbar',
'waitress',
]
# 定义了测试部分依赖包
tests_require = [
'WebTest >= 1.3.1', # py3 compat
'pytest >= 3.7.4',
'pytest-cov',
]
# 定义项目相关描述和安装执行过程,项目安装依赖需要执行这个文件
setup(
name='myproject',
version='0.0',
description='myproject',
long_description=README + '\n\n' + CHANGES,
classifiers=[
'Programming Language :: Python',
'Framework :: Pyramid',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
],
author='',
author_email='',
url='',
keywords='web pyramid pylons',
packages=find_packages(),
include_package_data=True,
zip_safe=False,
extras_require={
'testing': tests_require,
},
install_requires=requires,
entry_points={
'paste.app_factory': [
'main = myproject:main',
],
},
)
10.myproject包,包含了所有的核心代码和MVC模式开发所需要组件,留给下一篇博客,来记录