python github/项目组织

2024-04-19 21:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在考虑我的项目组织,想和大家分享我的想法,看看有没有更好的建议。 我最初将它划分为数据库逻辑、“业务”逻辑和一个web界面的包。你知道吗

通过这样做,我面临着需要从同级数据库包导入业务包的问题,这带来了查找同级包的问题。我将举例说明它的外观:

business/  
 |
 |-config/
 |  |_config1.yaml
 |  |_config2.yaml
 |  |-common/
 |  |_decorators.py
 |  |_environment.py
 |  |_logger.py 
 |
 |-handlers/
 |  |_somehandler.py
 |  |_otherhandler.py
 |
 |-nlp/
 |  |-validators/
 |  | |_validator1.py
 |  | |_validator2.py
 |  |
 |  |-analysis/
 |    |_someanalyzer.py
 |    |_otheranalysis.py
 |
 |_script1.py
 |_script2.py

database/  
 |_mongowrap.py  
 |_entities.py  
 |_mongoquery.py


webui/ (typical flask structure)
 |
 |-templates/
 |-static/
    |-css/
    |-js/
    |-img/   

所以为了能从商业中找到数据库包我有这个共同点/环境.py你知道吗

import sys
import os
from os.path import dirname

PROJECT_ROOT = os.environ['PROJECT_PATH']
PROJECT_CONFIGS = PROJECT_ROOT + '/business/config'
PROJECT_LOGS = PROJECT_ROOT + '/business/logs'

sys.path.append(PROJECT_ROOT)

我在business/script1.py或script2.py上导入这个东西,以便能够找到同级项目,以便脚本中使用的模块能够找到并使用它们。你知道吗

在使用其他模块/包的每个脚本/模块(如script1.py或script2.py)中,这是必须的

#!/usr/bin/python
# -*- coding: utf-8 -*-
from common.environment import *

if not PROJECT_ROOT:
    print "Error, PROJECT_PATH is not set!"
    exit()

....
....

你觉得这个怎么样?我喜欢独立项目的想法,也就是独立的github回购,独立地处理它们。数据库与业务包无关,它只提供对数据库引擎和模型实体的访问、连接和查询。你知道吗

我在想我可以搬家环境.py业务逻辑/初始化.py。如果这有助于我跳过每个脚本的导入调用。你知道吗

另一种选择是只有一个回购,以及里面的一切,所以没有兄弟包问题。但在不久的将来,这可能会成为一笔巨额回购,因为代码库正在增长。你知道吗

提前感谢您的任何建议或想法!你知道吗


Tags: 模块项目pyimportproject脚本数据库os