我一直在考虑我的项目组织,想和大家分享我的想法,看看有没有更好的建议。 我最初将它划分为数据库逻辑、“业务”逻辑和一个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。如果这有助于我跳过每个脚本的导入调用。你知道吗
另一种选择是只有一个回购,以及里面的一切,所以没有兄弟包问题。但在不久的将来,这可能会成为一笔巨额回购,因为代码库正在增长。你知道吗
提前感谢您的任何建议或想法!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐