EC2 Ubuntu 上的 Flask 服务器 运行 找不到 python 包
Flask server running on EC2 Ubuntu cannot find the python packages
我是 运行 一个使用 AWS EC2 和 Apache 的烧瓶服务器。问题是烧瓶服务器无法识别 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 找到包在哪里?
您需要执行以下操作:
- 为 python3
安装 mod-wsgi
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>
我是 运行 一个使用 AWS EC2 和 Apache 的烧瓶服务器。问题是烧瓶服务器无法识别 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 找到包在哪里?
您需要执行以下操作:
- 为 python3 安装
mod-wsgi
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>