2015-02-26 5 views
0

Я использую рамки Falcon. Я хочу, чтобы все автономные классы хранят в своих собственных директориях (класс, который служит для/Module1/был внутри реж/module1 /):Как разделить код Python на модули с общим кодом?

/app 
    ./app.py 
    /modules 
     /__init__.py 
     /module1 
      ... 
     /module2 
      ... 
     .... 

В app.py У меня есть инициализация приложения:

import falcon 
# falcon.API instances are callable WSGI apps 
app=falcon.API() 

Мои проблемы:

  1. как я должен организовать импорт модулей, что я могу получить доступ из module2 в Module1?
  2. Как я могу получить доступ к переменной приложения app.py из/module2:

мне нужно сделать этот код:

module2_mngr = Module2(CONFIG_FILE) 
app.add_route('/module2', module2_mngr) 

PS: Извините за мой английский

ответ

0

Простой пример где я могу использовать другую конфигурацию на основе флага api.debug.DEBUG:

создать базовый путь:/somepath/my_app/

создать sturcture папку:

/somepath/my_app/апи

/somepath/my_app/API/отладки

/somepath/my_app/конф

/somepath/my_app/conf/prod

/somepath/my_app/conf/dev

создавать пустые файлы:

/somepath/my_app/__init__.py 
/somepath/my_app/api/__init__.py 
/somepath/my_app/conf/prod/__init__.py 
/somepath/my_app/conf/dev/__init__.py 

Пример main.py (/ somepath/my_app/main.py):

import api.debug 
api.debug.DEBUG = False 
import conf 

Настройка api.debug.DEBUG == Ложные

/somepath/my_app/api/debug/__init__.py: 

DEBUG = False 

Создать простой «роутер»:

  • Если api.debug.DEBUG True - загружает конфигурацию производства.
  • Если api.debug.DEBUG является False - загружает конфигурацию разработки.

Так мы создаем

/somepath/my_app/conf/__init__.py: 

import api.debug 
if not api.debug.DEBUG: 
    from conf.prod import * 
else: 
    from conf.dev import * 
Смежные вопросы