我最近为我的应用程序从windows迁移到了树莓pi。它至少加载了一次,但现在我无法再次加载静态文件。
如果我以sudo(或不以sudo)的身份从shell运行python脚本,那么所有静态文件都会得到404,动态链接仍然可以正常工作。
如果我以"pi"的身份从IDLE登录运行它,它会很好地工作。
相关代码:
from bottle import route, run, get, request, static_file
@get('/pumps')
def pumpData():
return json.dumps(pump.getPumps())
# root dir
@route('/<filename>')
def server_static(filename):
return static_file(filename, root='')
# css dir
@route('/css/<filename>')
def server_static(filename):
return static_file(filename, root='css')
run(host='myip', port=2000, debug=True)
是什么原因导致了这个问题?我可以猜测这与权限有关,但我不知道该如何修复。
我不认为这是权限问题。(这将返回403。)这很可能是路径问题。
好消息是:修复它应该很简单。(著名的遗言)你应该选择
- 将绝对路径指定为
static_file
的root
参数,或者 - 在调用
bottle.run
之前,先将os.chdir()
调用到静态文件根目录中
所以,这个:
return static_file(filename, root='/path/to/your/static/file/root')
或者这个:
os.chdir('/path/to/your/static/file/root')
run(host='myip', port=2000, debug=True)