#python #apache #flask #mod-wsgi #flask-cors
#питон #апач #колба #мод-wsgi #колба-корс
Вопрос:
Установка:
CentOS Apache Python 3.6 flask flask-cors
Я получаю эту ошибку при развертывании своего приложения:
mod_wsgi (pid=18182): Failed to exec Python script file '/var/www/www.refinance.com.au/refinance/dist/refinance/wsgi.py'. mod_wsgi (pid=18182): Exception occurred processing WSGI script '/var/www/www.refinance.com.au/refinance/dist/refinance/wsgi.py'. Traceback (most recent call last): File "/var/www/www.refinance.com.au/refinance/dist/refinance/wsgi.py", line 10, in lt;modulegt; import app as application File "/var/www/www.refinance.com.au/refinance/dist/refinance/app.py", line 6, in lt;modulegt; from flask_cors import CORS ModuleNotFoundError: No module named 'flask_cors'
Забавная (и подчеркивающая) вещь заключается в том, что у меня есть flask_cors, установленный в моей виртуальной среде, но по какой-то причине мое приложение не может его найти.
Я даже попытался напрямую добавить папку в sys.path, но это не сработало.
httpd.conf
lt;VirtualHost 203.98.82.57:80gt; ServerName www.refinance.com.au WSGIDaemonProcess refinance user=apache group=apache threads=2 WSGIScriptAlias / /var/www/www.refinance.com.au/refinance/dist/refinance/wsgi.py lt;Directory /var/www/www.refinance.com.au/dist/gt; Require all granted lt;/Directorygt; lt;/VirtualHostgt;
wsgi.py
import sys import site site.addsitedir( "/var/www/www.refinance.com.au/refinance/dist/refinance/lib/python3.6/site-packages" ) sys.path.insert(0, "/var/www/www.refinance.com.au/refinance/dist/refinance/") import app as application
app.py
import json import os from flask import Flask, Response, request, send_from_directory from flask_cors import CORS import sendemail app = Flask(__name__) app.secret_key = os.environ.get("SECRET_KEY", "devel") cors = CORS( app, resources={r"*": {"origins": "*"}}, supports_credentials=True, ) app.config["CORS_HEADERS"] = "Content-Type" @app.route("/lt;path:pathgt;", methods=["GET"]) def static_proxy(path): if path.endswith(".js"): return send_from_directory("./", path, mimetype="application/javascript") return send_from_directory("./", path) @app.route("/") def root(): return send_from_directory("./", "index.html")
Я уже потратил довольно много часов на эту проблему, но не могу найти решения. Любая помощь будет признательна.
Ответ №1:
Решается путем обновления моего wsgi.py файл
Я пропустил каталог «env» в своем пути и неправильно импортировал свое приложение.
Ниже приведен правильный код.
wsgi.py
import sys import site site.addsitedir( # Before: "/var/www/www.refinance.com.au/refinance/lib/python3.6/site-packages" "/var/www/www.refinance.com.au/refinance/env/lib/python3.6/site-packages" ) sys.path.insert(0, "/var/www/www.refinance.com.au/refinance/dist/refinance/") # Before: import app as application from server import app as application