Problém nastane, když verze pluginu neodpovídá verzi bottle.
- Stáhl jsem si jednosouborovou verzi bottle.py příkazem
$ wget http://bottlepy.org/bottle.py
Při spuštění se hlásí jako Bottle v0.13-dev server. Přitom jsem si na hlavní stránce nepovšimnul upozornění Warning: This is a preview for Bottle-0.13-dev, which is not released yet.
- Všechno funguje dobře až do chvíle, kdy chci použít plugin bottle-sqlite. Ten nainstaluji přes PIP:
sudo pip3 install bottle-sqlite
- Pak dostávám strašné hlášky, nevím co si s tím mám počít:
Bottle v0.13-dev server starting up (using WSGIRefServer())... Listening on http://localhost:8080/ Hit Ctrl-C to quit. Traceback (most recent call last): File "/home/petr/Data/py/bottle/bottle.py", line 923, in _handle return route.call(**args) File "/home/petr/Data/py/bottle/bottle.py", line 248, in __get__ value = obj.__dict__[self.func.__name__] = self.func(obj) File "/home/petr/Data/py/bottle/bottle.py", line 545, in call return self._make_callback() File "/home/petr/Data/py/bottle/bottle.py", line 572, in _make_callback callback = plugin.apply(callback, self) File "/usr/local/lib/python3.4/dist-packages/bottle_sqlite.py", line 66, in apply conf = context['config'].get('sqlite') or {} TypeError: 'Route' object is not subscriptable 127.0.0.1 - - [02/Oct/2015 17:07:40] "GET / HTTP/1.1" 500 1672 ^C
- Co s tím, že "'Route' object is not subscriptable"? Nejdříve hledám chybu ve svém kódu, pak vygoogluji TypeError: 'Route' object is not subscriptable. Moc tomu nerozumím, jediné co chápu, že může být nějaký problém s verzemi. Napadne mě, že problém vzniknul tak, že Bottle jsem stahoval přímo z domácí stránky, zatímco plugin bottle-sqlite přes PIP. Udělám tedy to, že zkusím Bottle nainstalovat také přes PIP:
sudo pip3 install bottle Downloading/unpacking bottle Downloading bottle-0.12.8.tar.gz (69kB): 69kB downloaded Running setup.py (path:/tmp/pip_build_root/bottle/setup.py) egg_info for package bottle Installing collected packages: bottle Running setup.py install for bottle changing mode of build/scripts-3.4/bottle.py from 644 to 755 changing mode of /usr/local/bin/bottle.py to 755 Successfully installed bottle
- Vidím, že nyní se mi instaluje verze 12.8. Dám tedy pryč soubor bottle.py z pracovního adresáře (aby se mi nespouštěl namísto toho nainstalovaného) a ejhle, vše běží, jak má!
Ještě se podívám:
cat /usr/local/lib/python3.4/dist-packages/bottle_sqlite.py | grep __version__ __version__ = '0.1.2'
- Kupodivu ale nikde v tom pluginu se nepíše, pro jakou verzi bottle je určený :-(