2011-12-22 16 views
2

私はpython webdev実験のためにを受け取りました。 私の問題は、静的ファイルを提供できないことです。私のテンプレートで外部CSSを使用してください。 マイフォルダ構造は次のとおりです。/static/css/style.csspython - bottle + geventは静的ファイルを扱うことができません

マイコード:

# -*- coding: UTF-8 -*- 
from gevent import monkey; monkey.patch_all() #patching default Python threads 
from bottle import mount, run, debug #initializing bottle 
from routes import root #importing site routes 
debug(True) 
run(app = root , host = '0.0.0.0' , port = 80 , server = 'gevent') 

routes.py

index.py

# -*- coding: UTF-8 -*- 
from bottle import * 
root = Bottle() 

@root.get('/static/<path:path>') 
def serve_files(path): 
    return static_file(path , root = '/static/') 

ここに私です端子からのトレースバック:

xxx.xxx.xxx.xxx - - [2011-12-22 09:36:44] "GET /static/css/style.css HTTP/1.1" 500 161 0.002867 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/gevent-0.13.6-py2.7-linux-i686.egg/gevent/pywsgi.py", line 438, in handle_one_response 
    self.run_application() 
    File "/usr/local/lib/python2.7/dist-packages/gevent-0.13.6-py2.7-linux-i686.egg/gevent/pywsgi.py", line 424, in run_application 
    self.result = self.application(self.environ, self.start_response) 
    File "/usr/local/lib/python2.7/dist-packages/bottle-0.10.4-py2.7.egg/bottle.py", line 849, in __call__ 
    return self.wsgi(environ, start_response) 
    File "/usr/local/lib/python2.7/dist-packages/bottle-0.10.4-py2.7.egg/bottle.py", line 841, in wsgi 
    % (html_escape(repr(_e())), html_escape(format_exc(10))) 
NameError: global name '_e' is not defined 

お願いします。

UPDATE:

私はボトルの不安定版(バージョン0.11)をダウンロードし、私のスクリプトにインポートしました。今、そこには500エラーとトレースバックをありませんが、style.cssには私に

[2011-12-22 12:42:59] "GET /static/css/style.css HTTP/1.1" 404 122 0.000591 
+0

['_e()'](https://github.com/defnull/bottle/blob/master/bottle.py#L38) – jfs

+0

コメントが分かりません。あなたはダミーのためにそれを繰り返すことができますか? :) – bbrodriges

+0

'bottle.py'のバグのようです。回避策として 'bottle._e = lambda:sys.exc_info()[1]'を定義してください。 – jfs

答えて

4

404を与えるあなたはおそらく静的ファイルへのあなたのルートパスが間違っているので、404です。

root='/static/'は、ルートファイルシステムにstaticフォルダがある場合のみOKです。おそらくそれはあなたが本当に持っているものではないでしょう。プロジェクトフォルダがあり、このフォルダ内にstaticフォルダがある場合は、root='./static/'を使用しても問題ありません。

+0

はい、そうです。ありがとうございました。 – bbrodriges

+0

@ bender.rodrigesもし答えが正しいとすれば – gabeio

+1

@gabeDel私はこれを完全に忘れてしまった。ありがとうございました。 – bbrodriges