Виртуальная машина GCP с Apache2 и Flask имеет проблемы с пакетом Python - PullRequest
0 голосов
/ 05 апреля 2020

Я создал виртуальную машину на GCP с базовым образом из Ubuntu 18.04. Я хотел запустить сервер Apache2 для обслуживания приложения Flask.

Я успешно установил Apache2, установил wsgi и также настроил проект Flask. Приложение обслуживается должным образом, однако при просмотре веб-сайта произошла ошибка, возникающая в одном из пакетов Python.

Вот ошибка, которую я получаю в Apache2 /var/log/apache2/error.log:

 Traceback (most recent call last):
   File "/path/backend/backend.wsgi", line 11, in <module>
  from main import app as application
   File "/path/backend/main.py", line 1, in <module>
  from app import create_app
   File "/path/backend/app/__init__.py", line 5, in <module>
  from .routes import bp_routes
   File "/path/backend/app/routes.py", line 6, in <module>
  from google.cloud import storage, videointelligence
   File "/path/backend/.venv/lib64/python3.7/site-packages/google/cloud/videointelligence.py", line 20, in <module>
  from google.cloud.videointelligence_v1 import VideoIntelligenceServiceClient
   File "/path/backend/.venv/lib64/python3.7/site-packages/google/cloud/videointelligence_v1/__init__.py", line 24, in <module>
  from google.cloud.videointelligence_v1.gapic import video_intelligence_service_client
   File "/path/backend/.venv/lib64/python3.7/site-packages/google/cloud/videointelligence_v1/gapic/video_intelligence_service_client.py", line 24, in <module>
  import google.api_core.gapic_v1.client_info
   File "/path/backend/.venv/lib64/python3.7/site-packages/google/api_core/gapic_v1/__init__.py", line 16, in <module>
  from google.api_core.gapic_v1 import config
   File "/path/backend/.venv/lib64/python3.7/site-packages/google/api_core/gapic_v1/config.py", line 23, in <module>
  import grpc
   File "/path/backend/.venv/lib64/python3.7/site-packages/grpc/__init__.py", line 23, in <module>
  from grpc._cython import cygrpc as _cygrpc 
   ImportError: cannot import name 'cygrpc'

Ошибка происходит в пакете google-cloud-videointelligence, который импортирует некоторые зависимости, которые тормозят.

Вот файл requirements.txt:

Flask==1.1.1
flask-cors==3.0.8
google-cloud-storage==1.26.0
google-cloud-videointelligence==1.14.0

Когда я запускаю приложение вручную с помощью python application.py, тогда ошибки не возникает, и все работает нормально, когда я curl до localhost:5000.

Может ли быть так, что служба apache не имеет определенных разрешений для доступа к привязкам grpc?

[ОБНОВЛЕНИЕ]

Базовая система Ubuntu поставляется с различными предустановленными версиями python:

  • Python2
  • Python3
  • Python3 .6
  • Python3 .7

Я установил значение по умолчанию с помощью

sudo update-alternatives --install /usr/local/bin/python python /usr/bin/python3.7 1

, подтверждающего:

$ sudo update-alternatives --config python
There is only one alternative in link group python (providing /usr/bin/python): /usr/bin/python3.7
Nothing to configure.
...