1

У меня есть следующая структура папок:Как исправить appengine ImportError: Нет модуля с именем protobuf?

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

Я заметил, что вы не показываете '__init __. Py' в папке' protobuf'. – user2357112

+0

@ user2357112, там есть - исправлены вопросы. Благодарю. –

+0

потенциально связанные: http://stackoverflow.com/questions/37755195/importerror-no-module-named-webapp2-after-linux-sdk-upgrade-1-9-35-1-9-38 –

ответ

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')) 
0

я нашел @ ответ Даниэля на уже быть реализованы в моей установке, но все еще проблема. This github комментарий помог мне. Добавление следующих строк в appengine_config.py решена проблема для меня:

from google.appengine.ext import vendor 
vendor.add('lib') 
import google.protobuf; print(google.protobuf.__version__) 

изменения lib в libs в зависимости от вашего каталога проекта наименования.