2

作成中の Python ピラミッド アプリをあるサーバーから別のサーバーに移動しようとしています。ソース管理からコードをチェックアウトしpython setup.py develop、環境を準備するために を実行しましたが、実行しようとするpserve development.iniと、次のトレースバックが表示されます。

2013-02-27 20:38:20,269 INFO  [pyramid_scss][MainThread] adding asset path /home/pgrace/repos/Asterisk-WebApps/Cedar-Root/opt/cedar/cedar/assets/scss
Traceback (most recent call last):
  File "/home/pgrace/venvs/pyramid/bin/pserve", line 8, in <module>
    load_entry_point('pyramid==1.4', 'console_scripts', 'pserve')()
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/pyramid/scripts/pserve.py", line 50, in main
    return command.run()
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/pyramid/scripts/pserve.py", line 304, in run
    global_conf=vars)
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/pyramid/scripts/pserve.py", line 328, in loadapp
    return loadapp(app_spec, name=name, relative_to=relative_to, **kw)
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 247, in loadapp
    return loadobj(APP, uri, name=name, **kw)
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 272, in loadobj
    return context.create()
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 710, in create
    return self.object_type.invoke(self)
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 146, in invoke
    return fix_call(context.object, context.global_conf, **context.local_conf)
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/paste/deploy/util.py", line 56, in fix_call
    val = callable(*args, **kw)
  File "/home/pgrace/repos/Asterisk-WebApps/Cedar-Root/opt/cedar/cedar/__init__.py", line 18, in main
    config.include("pyramid_scss")
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/pyramid/config/__init__.py", line 773, in include
    c(configurator)
  File "/home/pgrace/venvs/pyramid/lib/python2.6/site-packages/pyramid_scss/__init__.py", line 88, in includeme
    scss.LOAD_PATHS = ','.join([scss.LOAD_PATHS, ','.join(load_paths)])
AttributeError: 'module' object has no attribute 'LOAD_PATHS'

これで、問題の原因が pyramid_scss にあることがわかりましたが、それが参照しているコードに問題がないことがわかる限り、moduleクラスに LOAD_PATHS ディレクティブが含まれていないようです。依存関係などがないかどうかを追跡できるように、それが参照しているモジュールを把握しようとしています。moduleそのコードをチェックできるように、参照が指している場所を特定する方法を知っている人はいますか?

編集:エラーはincludeme、ピラミッド固有のパッケージがインスタンス化されるたびに、私が読んだものから自動的に含まれる定義に含まれていますか? 多分?いずれにせよ、scss.LOAD_PATHS は存在しないと言っていますが、どちらのパッケージにも scss クラスがないため、pyramid_scsspyScssのクラスが遅延バインドされているかどうか疑問に思います。

def includeme(config):
    load_paths, static_path = _get_import_paths(config.registry.settings)
    scss.LOAD_PATHS = ','.join([scss.LOAD_PATHS, ','.join(load_paths)])
    scss.STATIC_ROOT = static_path
    config.add_renderer('scss', renderer_factory)

pyScssのScssクラスには LOAD_PATHS ディレクティブが含まれていますが、オブジェクト scss が Scss クラス定義にバインドされている場所がわかりません。答えの一部である可能性がある上からの何かが欠けているかどうか疑問に思ってdef includemeいますが、それから疑問が生じます-これは他のマシンで正しく機能しましたが、なぜ今壊れるのでしょうか? 私が拾っていないだけで何かが欠けています。

4

2 に答える 2

3

scssパッケージのコードを調べると、LOAD_PATHSグローバル変数が から に移動し__init__.pyたようconfig.pyです。

したがって、アプリを修正したい場合は、 のpyramid_scss88 行目を次のように変更できpyramid_scss/__init__.pyます。

scss.config.LOAD_PATHS = ','.join([scss.config.LOAD_PATHS, ','.join(load_paths)])
于 2013-02-27T20:56:40.010 に答える
2

最後の1行は、影響を受けるモジュールを示しています。

    scss.LOAD_PATHS = ','.join([scss.LOAD_PATHS, ','.join(load_paths)])
AttributeError: 'module' object has no attribute 'LOAD_PATHS'

したがって、scssモジュールにはLOAD_PATHS属性がありません。

于 2013-02-27T20:48:05.623 に答える