python开源项目目录结构参考和django最佳实践:项目布局
2012-09-28 17:59
691 查看
转自:/article/4778447.html
每个真正的程序员,可能都会梦想着能够发布开源项目,让自己的代码被别人所用。开源项目会发布到开发的版本管理系统(比如GitHub)上面,为了让大家能够方便使用你的代码,项目的目录结构应该遵循一定的规范。即使不是开源项目,项目目录结构符合一定的规范对你的项目管理也是有好处的。
下面列出python开源项目的通常目录结构及说明:
.tx/ 如果你使用Transifex进行国际化的翻译工作,创建此目录
config Transifex的配置文件
$PROJ_NAME/ 按照你实际的项目名称创建目录。如果有多个子项目,就创建多个目录
docs/ 项目文档
wiki/ 如果有wiki,可以创建此目录
scripts/ 项目用到的各种脚本
tests/ 测试代码
extras/ 扩展,不属于项目必需的部分,但是与项目相关的sample、poc等,下面给出4个例子:
dev_example/
production_example/
test1_poc/
test2_poc/
.gitignore 版本控制文件,现在git比较流行
AUTHORS 作者清单
INSTALL 安装说明
LICENSE 版权声明
MANIFEST.in 装箱清单文件
MAKEFILE 编译脚本
README 项目说明文件,其他需要的目录下也可以放一个README文件,说明该目录的内容
setup.py python模块的安装脚本
这个目录结构是针对python项目的,各种语言习惯的目录结构可能不同,但一些基本的要素还是共同的,可以举一反三。
在python开源项目目录结构的基础上,进一步定义django的目录结构。根据django的特性,分成两部分:project结构和app结构。
这里定义的是python开源项目目录结构中的$PROJ_NAME目录内的内容,需要与python开源项目目录结构结合起来。
PROJ_NAME/
__init__.py 这几个文件是django创建project所必须的,不做过多说明
manage.py
settings.py
urls.py
apps/ 即使是“小”工程,也建议分成多个app,每个app足够简单,只解决某一个方面的问题 (注1)
myapp1/
myapp2/
extra_apps/ 引用的其他app。
libs/ 加载第三方模块,可以避免版本冲突,按照标准的site-packages管理(注2)
python*.*/ 指定python版本号
site-packages/
requirements.pip #pip的依赖说明文件
tests/ project级别的测试,对于每个app,还要有自己的测试代码
static/ 静态内容
css/
js/
images/
uploads/ 上传文件所在目录
templates/ 模板目录,覆盖app的模板
flatpages/
comments/
example/
app1/
app2/
templatetags/ tag目录
注1:指定app加载,在settings.py中设置:
注2:自定义libs的加载,在settings.py中设置:
$APP_NAME/
tests/ app级别的测试代码
models/ 注1
__init__.py
Amodels.py
Bmodels.py
templates/ 注2
templatetags/ tag目录
注1:如果很好的控制app的规模,Model类数量少,可以使用惯用的models.py文件中, 否则将models做成一个package
接下来可以有两种做法:
1. 在__init__.py中import所有的Model类
2. 指定Model的元类(Meta)的app_label, 参考这里
注2:如果extend 工程下的base.html, 使用 !base.html
每个真正的程序员,可能都会梦想着能够发布开源项目,让自己的代码被别人所用。开源项目会发布到开发的版本管理系统(比如GitHub)上面,为了让大家能够方便使用你的代码,项目的目录结构应该遵循一定的规范。即使不是开源项目,项目目录结构符合一定的规范对你的项目管理也是有好处的。
下面列出python开源项目的通常目录结构及说明:
.tx/ 如果你使用Transifex进行国际化的翻译工作,创建此目录
config Transifex的配置文件
$PROJ_NAME/ 按照你实际的项目名称创建目录。如果有多个子项目,就创建多个目录
docs/ 项目文档
wiki/ 如果有wiki,可以创建此目录
scripts/ 项目用到的各种脚本
tests/ 测试代码
extras/ 扩展,不属于项目必需的部分,但是与项目相关的sample、poc等,下面给出4个例子:
dev_example/
production_example/
test1_poc/
test2_poc/
.gitignore 版本控制文件,现在git比较流行
AUTHORS 作者清单
INSTALL 安装说明
LICENSE 版权声明
MANIFEST.in 装箱清单文件
MAKEFILE 编译脚本
README 项目说明文件,其他需要的目录下也可以放一个README文件,说明该目录的内容
setup.py python模块的安装脚本
这个目录结构是针对python项目的,各种语言习惯的目录结构可能不同,但一些基本的要素还是共同的,可以举一反三。
在python开源项目目录结构的基础上,进一步定义django的目录结构。根据django的特性,分成两部分:project结构和app结构。
project结构
这里定义的是python开源项目目录结构中的$PROJ_NAME目录内的内容,需要与python开源项目目录结构结合起来。PROJ_NAME/
__init__.py 这几个文件是django创建project所必须的,不做过多说明
manage.py
settings.py
urls.py
apps/ 即使是“小”工程,也建议分成多个app,每个app足够简单,只解决某一个方面的问题 (注1)
myapp1/
myapp2/
extra_apps/ 引用的其他app。
libs/ 加载第三方模块,可以避免版本冲突,按照标准的site-packages管理(注2)
python*.*/ 指定python版本号
site-packages/
requirements.pip #pip的依赖说明文件
tests/ project级别的测试,对于每个app,还要有自己的测试代码
static/ 静态内容
css/
js/
images/
uploads/ 上传文件所在目录
templates/ 模板目录,覆盖app的模板
flatpages/
comments/
example/
app1/
app2/
templatetags/ tag目录
注1:指定app加载,在settings.py中设置:
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'apps')) sys.path.insert(0, os.path.join(PROJECT_ROOT, 'extras')) sys.path.insert(0, os.path.join(PROJECT_ROOT, 'libs'))
注2:自定义libs的加载,在settings.py中设置:
sys.path.insert(0, '/{{MY_LIB)}/site-packages/*****.egg') sys.path.insert(0, '/{{MY_LIB}} /site-packages/')
app目录结构
$APP_NAME/tests/ app级别的测试代码
models/ 注1
__init__.py
Amodels.py
Bmodels.py
templates/ 注2
templatetags/ tag目录
注1:如果很好的控制app的规模,Model类数量少,可以使用惯用的models.py文件中, 否则将models做成一个package
接下来可以有两种做法:
1. 在__init__.py中import所有的Model类
2. 指定Model的元类(Meta)的app_label, 参考这里
注2:如果extend 工程下的base.html, 使用 !base.html
相关文章推荐
- Django 1.6 最佳实践: Django项目的布局结构和目录结构
- Python开源项目目录结构参考
- python开源项目目录结构参考
- django项目目录结构最佳实践
- django最佳实践:项目布局
- django最佳实践:项目布局
- django最佳实践:项目布局
- django最佳实践:项目布局
- django最佳实践:项目布局
- Django最佳实践:项目布局
- python项目目录结构
- 【Python】Django 时间字段 最佳实践
- python开源项目学习目录
- nodejs 实践:express 最佳实践 (一) 项目结构
- 带你学开源项目:Meizhi Android之RxJava & Retrofit最佳实践
- python编程快速上手之第5章实践项目参考答案
- Python项目自动化部署最佳实践@搜狐 | the5fire的技术博客
- iOS项目结构目录参考图示
- Django -- 0x01、Django项目的目录结构 & 连接MySQL(上)
- Django应用程序,设置文件和其他各种关联目录的最佳布局是什么?