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
编辑:接受的答案是正确的,但就我而言,我在一级顶级目录中运行脚本。因此,以下解决方案似乎更强大:
import os, inspect, sys
sys.path.append(os.path.dirname(__file__))
或者可能是这样:如何在 Python 中获取当前执行文件的路径?:)