BeakerはPython標準ライブラリの一部ではないので、Python標準ライブラリ自体ではなく、アプリケーションに依存関係がないようにします。これを実現するために、ビーカーをダウンロードして、アプリケーションのサブパッケージとして抽出します。
次に、これを使用します。
import os, inspect, sys
sys.path.append(os.path.abspath('./beaker'))
import beaker.middleware
app = beaker.middleware.SessionMiddleware(bottle.app(), session_opts)
そして、このエラーを取得します
Traceback (most recent call last):
File "start.py", line 8, in <module>
from kokoropy import kokoro_init
File "/home/gofrendi/workspace/kokoropy/kokoropy/__init__.py", line 9, in <module>
import beaker.middleware
File "/home/gofrendi/workspace/kokoropy/kokoropy/beaker/middleware.py", line 11, in <module>
from beaker.cache import CacheManager
ImportError: No module named beaker.cache
問題はbeaker.middlewareの11行目にあります。
from beaker.cache import CacheManager
ビーカーパッケージがインストールされていないため、インタープリターはビーカーパッケージを認識できません。実際には、その行を次のように変更することで修正できます。
from cache import CacheManager
しかし、そうすることで、私は多くの変更を加える必要があります。
それで、ビーカーをインストールせずに、そしてあまり多くの変更を行わずに使用する方法はありますか?
PS:以下は私のディレクトリ構造です
kokoropy
|
|--- __init__.py <-- this is where I write my script
|
|--- beaker
|
|--- __init__.py
編集:受け入れられた答えは正しいですが、私の場合、私は1レベルのトップディレクトリでスクリプトを実行します。したがって、以下のソリューションはより堅牢であるように思われます。
import os, inspect, sys
sys.path.append(os.path.dirname(__file__))