ZODB установлен через PyPI
Решил поэксперементировать с примером из руководства и…. столкнулся с такой ошибкой:
No handlers could be found for logger "zc.lockfile"
Traceback (most recent call last):
File "/home/gur/openpypsi/ZODB/ZODBexample.py", line 6, in <module>
storage = FileStorage.FileStorage('drawing.fs')
File "/usr/local/lib/python2.6/dist-packages/ZODB/FileStorage/FileStorage.py", line 126, in __init__
self._lock_file = LockFile(file_name + '.lock')
File "/usr/local/lib/python2.6/dist-packages/zc/lockfile/__init__.py", line 76, in __init__
_lock_file(fp)
File "/usr/local/lib/python2.6/dist-packages/zc/lockfile/__init__.py", line 59, in _lock_file
raise LockError("Couldn't lock %r" % file.name)
LockError: Couldn't lock 'drawing.fs.lock'
No handlers could be found for logger "ZODB.FileStorage"
Но это я так понимаю связано с тем, что ZODBотдает логи о своих действиях и ожидает, что будет функция, их принимающая.
Сам код примера:
from turtle import *
import transaction
from ZODB import DB, FileStorage
storage = FileStorage.FileStorage('drawing.fs')
db = DB(storage)
connection = db.open()
drawing = connection.root()
def switchupdown(x=0, y=0):
pen()['pendown'] and not up() or down()
def redraw(turtle_buffer):
ops = [turtle_buffer.pop() for i in range(turtle_buffer.nr_of_items())]
ops.reverse()
for op in ops:
if op[0] == 'go':
up()
goto(op[1])
if op[3][0]:
down()
goto(op[2])
def clear():
clearscreen()
init()
def quit():
drawing['turtle_buffer'] = getturtle().undobuffer
transaction.commit()
bye()
def init():
onscreenclick(goto,1)
onscreenclick(switchupdown,3)
onkey(quit, 'q')
onkey(clear, 'c')
listen()
if __name__ == "__main__":
if 'turtle_buffer' in drawing:
redraw(drawing['turtle_buffer'])
init()
mainloop()
Я согласен, что пример грязноват: например не закрывается соединение с базой и используются неперсистентные данные, однако взяв пример с персистетным набором данных на Linux получил ту же первую ошибку. Я так понимаю, что программе(точнее учетке, под которой работает программа) нужны дополнительные разрешения.А вот какие?