#python #google-maps #google-app-engine #google-cloud-platform
#python #google-карты #google-app-engine #google-облачная платформа
Вопрос:
Я использую Python3.7
среду выполнения и установил googlemaps
модуль в lib
папку с помощью команды
$ python -m pip --upgrade install -t lib/ googlemaps
На местном уровне это работало нормально. Я развернул свой проект flask в Google Cloud, где я определил поставщика в appengine_config.py
следующим образом:
import os
from google.appengine.ext import vendor
# Add any libraries installed in the "lib" folder.
vendor.add('lib')
vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))
Но когда проект развертывается на движке Google, я получаю эту ошибку:
import googlemaps ModuleNotFoundError: No module named 'googlemaps'
Пожалуйста, любая помощь?
Комментарии:
1. Какую среду выполнения вы используете, Python 2.7 или Python 3.7?
2. @DustinIngram 3.7
3. есть ли в вашей
lib
папке__init__.py
4. готово! хотя это решило вашу проблему, я рекомендовал настроить ваши зависимости так, как объяснил Дастин в своем ответе
5. Да, это не рекомендуемый способ установки зависимостей в среде выполнения 3.7. Тем не менее, он идеально подходит для 2.7!
Ответ №1:
Python 3.7 — это «идиоматическая» среда выполнения Python. Среди прочего, это означает, что вам не нужно связывать свои зависимости с вашим приложением, как это приходилось делать для среды выполнения 2.7.
Вместо этого вы должны указать requirements.txt
файл с именем пакета в нем, например:
googlemaps==3.0.2
И эта зависимость будет установлена при следующем развертывании вашего приложения. Более подробную информацию смотрите в разделе «Указание зависимостей«.
Ответ №2:
Есть ли в вашей lib
папке __init__.py
?
Он необходим, поскольку lib
папка обрабатывается как пакет
https://docs.python.org/3/tutorial/modules.html#packages
Но если вы можете, вам следует использовать requirements.txt как рекомендовал @Dustin. Я работаю в среде python2 годами, и моя lib
папка превратилась в громоздкий беспорядок.