配置文件和数据
如框架无特殊规定,配置文件应放置于项目根目录下的
config
文件夹中配置文件在部署、预发布、生产环境、开发环境等环境中会有很大差异,因此请不要将配置文件在上传到git、svn等版本库中,
而是建议在版本库中上传一个配置的示例文件(如:config.example)上传到版本库中配置示例文件不允许出现密码、证书、token等敏感信息
数据和程序应该尽量分离,不要将数据写在代码中,需要持久化存储数据必须使用数据库
项目目录结构示例
以下是一个web项目的目录结构示例
.project_root/ 项目根目录
|
├── app/ app代码等(不限定,可根据实际情况命名和确定结构)
│ ├── .../
│ ├── .../
│ └── ...
├── config/ 配置文件夹
│ ├── config.ini 配置文件(应该被版本库ignore掉)
│ └── config.ini.example 配置文件示例
├── static/ 静态文件夹
│ ├── css/
│ ├── img/
│ ├── js/
│ └── favicon.ico 网站图标
├── README.md 项目说明文件
├── requrements.txt 项目依赖文件
├── TODO.md 待完成项目
└── .gitignore 版本库ignore文件
包和依赖
如无特殊情况,项目的包管理器一律使用pip
项目根目录下必须包含requirements.txt文件,作为项目依赖的显示声明文件
-
所有依赖都必须显示声明,禁止隐式依赖,例如:
# 错误,依赖的wget在别的系统环境下很可能不存在 def download(url): os.system('wget %s' % url)
以上代码隐式依赖了wget,但很有可能开发环境中有wget,而在部署环境下根本不存在,
这样部署app时就很可能出错! 依赖声明文件中不应该包含项目中没有用到的依赖
-
建议在开发项目时使用virtualenv做依赖隔离,便于使用pip freeze自动生成
# 自动生成requirement.txt示例 $ pip freeze > requirements.txt