Модуль Python не найден при запуске локального сервера разработки webapp2 (Python) в Google Cloud SDK - PullRequest
0 голосов
/ 19 октября 2018

Я запускаю сервер webapp2 в Google Cloud SDK и использую модуль Naked для запуска скриптов node.js из python2 в окне Vagrant.При запуске сервера с этим фрагментом кода

from Naked.toolshed.shell import muterun_js


def get_signed_hash(username):

    response_from_js = muterun_js('./views/api/generateSignedTransaction.js',
                                  nonce)
    signed_hash = response_from_js.stdout
    print('0x' + signed_hash)

я получаю это сообщение об ошибке

ImportError: No module named Naked.toolshed.shell

Я использую библиотеку requests какхорошо, и это не вызывает никаких проблем.Попытался отладить проблему относительно, возможно, расположения пакетов, они оба находятся в одном и том же месте:

>>> import requests
>>> print(requests.__file__)
/home/vagrant/.local/lib/python2.7/site-packages/requests/__init__.pyc
>>> import Naked
>>> print(Naked.__file__)
/home/vagrant/.local/lib/python2.7/site-packages/Naked/__init__.pyc

Infact Я запустил сценарий в том же месте, что и отдельный файл, вызывая get_signed_hash('username'), и онработает успешно.Есть ли другое место, которое мне нужно проверить?

1 Ответ

0 голосов
/ 19 октября 2018

Для приложений стандартного окружения первого поколения необходимо установить зависимости внутри приложения (или встроенного).Наличие их в системе site-packages (откуда обычные автономные приложения загружают библиотеки) недостаточно.Даже если вы каким-либо образом убедите локальный сервер разработки запустить приложение, оно не будет работать при загрузке в GAE, поскольку GAE не имеет доступа к вашей локальной системе.

Обычно вы устанавливаете свою библиотеку (ивсе его зависимости) в каталоге lib в директории вашего приложения, чтобы они могли быть загружены в GAE вместе с вашим приложением.См. Копирование сторонней библиотеки .

В качестве альтернативы вы можете попытаться просто вставить символическую ссылку Naked в вашу директорию lib, которая может работать, если все остальные зависимости уже удовлетворены.аналогичным образом.См. Связанный Как я могу получить доступ к специализированной библиотеке из модуля в Python Google App Engine?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...