如何将 Python 代码分成共享代码的模块?
How to divide Python code to modules with shared code?
我正在使用 Falcon 框架。我希望所有独立的 classes 都存储在它们自己的目录中(为 /module1/ 服务的 class 在目录 /module1/ 中):
/app
./app.py
/modules
/__init__.py
/module1
...
/module2
...
....
在 app.py 我有应用程序的初始化:
import falcon
# falcon.API instances are callable WSGI apps
app=falcon.API()
我的问题:
- 我必须如何组织模块的导入,我可以从
模块 2 到模块 1?
- 如何从 /module2:
访问 app.py 的应用程序变量
我需要执行此代码:
module2_mngr = Module2(CONFIG_FILE)
app.add_route('/module2', module2_mngr)
PS:
对不起我的英语
我可以根据 api.debug.DEBUG 标志使用不同配置的简单示例:
创建一些基本路径:/somepath/my_app/
创建文件夹结构:
/somepath/my_app/api
/somepath/my_app/api/debug
/somepath/my_app/conf
/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 *
我正在使用 Falcon 框架。我希望所有独立的 classes 都存储在它们自己的目录中(为 /module1/ 服务的 class 在目录 /module1/ 中):
/app
./app.py
/modules
/__init__.py
/module1
...
/module2
...
....
在 app.py 我有应用程序的初始化:
import falcon
# falcon.API instances are callable WSGI apps
app=falcon.API()
我的问题:
- 我必须如何组织模块的导入,我可以从 模块 2 到模块 1?
- 如何从 /module2: 访问 app.py 的应用程序变量
我需要执行此代码:
module2_mngr = Module2(CONFIG_FILE)
app.add_route('/module2', module2_mngr)
PS: 对不起我的英语
我可以根据 api.debug.DEBUG 标志使用不同配置的简单示例:
创建一些基本路径:/somepath/my_app/
创建文件夹结构:
/somepath/my_app/api
/somepath/my_app/api/debug
/somepath/my_app/conf
/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 *