python github /项目组织

时间:2014-03-03 00:12:24

标签: python github python-import

我一直在考虑我的项目组织,并希望分享我的想法,看看是否有更好的建议。 我最初将其分为数据库逻辑包,“业务”逻辑和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/   

因此,为了能够从业务中找到数据库包,我有这个common / environment.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 repos,独立地处理它们。数据库与业务包无关,它提供的只是访问,连接,对数据库引擎和模型实体的查询。

我认为我可以将environment.py逻辑移动到业务/ init .py。如果这有助于我跳过每个脚本的导入调用。

另一个选择是只有一个repo,以及其中的所有内容,所以没有兄弟包问题。但随着代码库的增长,这可能会在不久的将来成为一个巨大的回购。

提前感谢任何建议或想法!

0 个答案:

没有答案