我正在使用帶有 Apache 的 AWS EC2 運行燒瓶服務器。問題是燒瓶服務器無法識別 python 包的位置。
Python 包位于“/home/ubuntu/.local/lib/python3.8/site-packages/”
下面是 /var/www/html/flaskapp/flaskapp.py
import numpy as np
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def hello_world():
return jsonify("Hello From Flask")
@app.route('/countme/<input_str>')
def count_me(input_str, methods = ['GET']):
return jsonify(input_str)
if __name__ == '__main__':
app.run()
當我嘗試訪問我的服務器時,出現此錯誤
ModuleNotFoundError: No module named 'numpy'
下面是'flaskapp.wsgi'
import sys
import site
sys.path.insert(0, '/var/www/html/flaskapp')
from flaskapp import app as application
下面是'/etc/apache2/sites-enabled/000-default.conf'
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
WSGIDaemonProcess flaskapp threads=5 python-path=/var/www/html/flaskapp/flaskapp
WSGIScriptAlias / /var/www/html/flaskapp/flaskapp.wsgi
<Directory flaskapp>
WSGIProcessGroup flaskapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
誰能讓我知道我應該怎么做才能讓flaskapp找到包裹在哪里?
uj5u.com熱心網友回復:
您需要執行以下操作:
mod-wsgi為 python3安裝
sudo apt-get install libapache2-mod-wsgi-py3
這將替換 libapache2-mod-wsgi 并重新啟動 apache 服務。
- 將您的 python 包路徑添加到位于的腳本中
/etc/apache2/sites-enabled/000-default.conf
WSGIPythonHome "/usr/local/bin"
WSGIPythonPath "/home/ubuntu/.local/lib/python3.8/site-packages"
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
WSGIDaemonProcess flaskapp threads=5 python-path=/var/www/html/flaskapp/flaskapp
WSGIScriptAlias / /var/www/html/flaskapp/flaskapp.wsgi
<Directory flaskapp>
WSGIProcessGroup flaskapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426913.html
