我需要在我的主函数中拉取一个配置文件:
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
parser = SafeConfigParser()
ret = parser.read('/var/www/finance/corefinance/database.ini')
connstring = parser.get('postgres', 'connstring')
settings['sqlalchemy.url'] = connstring
database.ini 的位置比 init.py 的位置高一级
我以为我可以只使用“../database.ini”,但那行不通。唯一可行的是把整个路径。如何避免在此文件中输入完整路径?
最佳答案
当然,在您的 __init__.py 中,您可以使用项目父目录的字符串表示来定义一个变量:
project_dir = '/var/www/finance/corefinance/'
但我确定您不会通过 SO 获得这样的答案。
另一种方法是在 [app:main]
中添加类似于以下行的内容development.ini 和 production.ini 的一部分:
project_dir = %(here)s/mycoolwebsite
或者甚至只是:
project_dir = %(here)s
然后在您的 __init__.py(以及您想要引用项目父目录的任何其他地方)中,您可以通过以下方式检索该值:
project_dir = config.registry.settings['project_dir']
有关自定义变量的更多信息,请参阅:http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html#adding-a-custom-setting
关于python - Pyramid :如何避免将完整路径放入我的 __init__.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25143843/