我有以下文件夹结构:
myappdir
- libs
- somelib
script1.py
script2.py
- google
- protobuf
__init__.py
message.py
...
__init__.py
...
app.yaml
appengine_config.py
...
以下文件内容 -
appengine_config.py :
import sys
sys.path.append('libs')
script1.py :
from somelib.script2 import Something
script2.py :
from google.protobuf import message
结果我得到:
File "myappdir/libs/somelib/script1.py", line 34, in <module>
from somelib.script2 import Something
File "myappdir/libs/somelib/script2.py", line 38, in <module>
from google.protobuf import message
ImportError: No module named protobuf
我的设置有什么问题?
答案 0 :(得分:0)
更改 appengine_config.py 文件中的行:
import sys
sys.path.append('libs')
为:
import sys
import os.path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'libs'))
答案 1 :(得分:0)
我发现@ Daniel的答案已经在我的设置中实现了,但仍然有问题。 This github评论帮助了我。将以下内容添加到 appengine_config.py 为我解决了这个问题:
from google.appengine.ext import vendor
vendor.add('lib')
import google.protobuf; print(google.protobuf.__version__)
根据您的项目目录命名,将lib
更改为libs
。