Я создал виртуальную машину на 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.