私が構築している (pyplay と呼ばれる) ピラミッド アプリでは、development.ini にあるアプリケーション設定を取得する必要があります。問題は、その設定を取得しようとしている場所がリクエスト変数にアクセスできないことです (たとえば、モジュール ファイルの最上位)。
したがって、ドキュメントでこの例を見た後: http://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/configuration/django_settings.html最初は非常に単純でハードコーディングされたものを機能させるためだけに始めました。私の development.ini には [app:main] というセクションがあるので、試した簡単な例は次のとおりです。
from paste.deploy.loadwsgi import appconfig
config = appconfig('config:development.ini', 'main', relative_to='.')
しかし、アプリケーションは起動を拒否し、次のエラーを表示します:
ImportError: <module 'pyplay' from '/home/pish/projects/pyplay/__init__.pyc'> has no 'main' attribute
したがって、「main」の代わりに「pyplay」を配置する必要があるのではないかと考えて、先に進みましたが、代わりに次のエラーが発生しました。
LookupError: No section 'pyplay' (prefixed by 'app' or 'application' or 'composite' or 'composit' or 'pipeline' or 'filter-app') found in config ./development.ini
この時点で、私は少し立ち往生しており、何が間違っているのかわかりません。誰かが私にこれを行う方法を教えてもらえますか?
前もって感謝します!
編集:以下は私の development.ini ファイルの内容です (pish.theparam は私が取得しようとしている設定であることに注意してください):
###
# app configuration
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
###
[app:main]
use = egg:pyplay
pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en_US.utf8
pyramid.includes =
pyramid_debugtoolbar
pyramid_tm
sqlalchemy.url = mysql://user:passwd@localhost/pyplay?charset=utf8
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
debugtoolbar.hosts = 127.0.0.1 ::1
pish.theparam = somevalue
###
# wsgi server configuration
###
[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 6543
###
# logging configuration
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
###
[loggers]
keys = root, pyplay, sqlalchemy
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = INFO
handlers = console
[logger_pyplay]
level = DEBUG
handlers =
qualname = pyplay
[logger_sqlalchemy]
level = INFO
handlers =
qualname = sqlalchemy.engine
# "level = INFO" logs SQL queries.
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s