首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在EC2 -瓶应用程序上导入模块

无法在EC2 -瓶应用程序上导入模块
EN

Stack Overflow用户
提问于 2017-11-02 22:19:28
回答 2查看 769关注 0票数 0

我无法在NumPy微型实例上的烧瓶应用程序中导入像EC2、sklearn等模块。

在/home/ubuntu目录中,我有一个目录flaskapp,其中包含:

  1. flaskapp.py
  2. flaskapp.wsgi

flaskapp.py中的代码是:

代码语言:javascript
运行
复制
import sys
import os
import shutil
import time
import traceback

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/predict')
def predict():
    from sklearn.externals import joblib
    import numpy as np
    clf = joblib.load("flaskapp/models/saved_model.pkl")
    print 'model loaded'
    if clf:
        try:
            prediction = list(clf.predict(np.array([['0', '100', '164', '150', '1']])))
            return jsonify({'prediction': prediction})
        except Exception, e:
            return "ERROR" + e
    else:
        print os.getcwd()
        return 'no model here'


if __name__ == '__main__':
    from sklearn.externals import joblib
    import numpy as np
    print "Imports Done"
    app.run(DEBUG=True)

flaskapp.wsgi看起来如下所示:

代码语言:javascript
运行
复制
import sys
import site
site.addsitedir('/home/ubuntu/.local/lib/python2.7/site-packages')
sys.path.insert(0, '/var/www/html/flaskapp')
from flaskapp import app as application

根据以下问题:wsgi/Apache2

我将我的/etc/apache2/sites-enabled/000-default.conf (和网站也可以)修改为:

代码语言:javascript
运行
复制
WSGIPythonPath /usr/local/lib/python2.7/site-packages/
<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html


        WSGIDaemonProcess flaskapp threads=5
        WSGIScriptAlias / /var/www/html/flaskapp/flaskapp.wsgi

        <Directory flaskapp>
                WSGIProcessGroup flaskapp
                WSGIApplicationGroup %{GLOBAL}
                Order deny,allow
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

转到URL http://ec2-....compute-1.amazonaws.com/predict抛出:

500内部服务器错误 服务器遇到内部错误,无法完成请求。要么服务器重载,要么应用程序中出现错误。

错误日志显示以下内容:

代码语言:javascript
运行
复制
[Thu Nov 02 22:15:21.936872 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592] [2017-11-02 22:15:21,936] ERROR in app: Exception on /predict [GET]
[Thu Nov 02 22:15:21.936900 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592] Traceback (most recent call last):
[Thu Nov 02 22:15:21.936903 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app
[Thu Nov 02 22:15:21.936905 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]     response = self.full_dispatch_request()
[Thu Nov 02 22:15:21.936907 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request
[Thu Nov 02 22:15:21.936909 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]     rv = self.handle_user_exception(e)
[Thu Nov 02 22:15:21.936911 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception
[Thu Nov 02 22:15:21.936913 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]     reraise(exc_type, exc_value, tb)
[Thu Nov 02 22:15:21.936915 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request
[Thu Nov 02 22:15:21.936917 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]     rv = self.dispatch_request()
[Thu Nov 02 22:15:21.936918 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]   File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request
[Thu Nov 02 22:15:21.936920 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]     return self.view_functions[rule.endpoint](**req.view_args)
[Thu Nov 02 22:15:21.936922 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]   File "/var/www/html/flaskapp/flaskapp.py", line 37, in predict
[Thu Nov 02 22:15:21.936924 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592]     import numpy as np
[Thu Nov 02 22:15:21.936931 2017] [wsgi:error] [pid 11753:tid 140263731681024] [client 130.245.192.4:11592] ImportError: No module named numpy
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-02 22:42:05

问题是apache2无法访问该目录。遗憾的是,在上面的问题中有一个很小的评论,而被接受的答案并不是正确的。

在这里添加解决方案,如果它可以帮助某人:

代码语言:javascript
运行
复制
sudo chown -R www-data:www-data /home
票数 1
EN

Stack Overflow用户

发布于 2020-06-26 12:48:23

代码语言:javascript
运行
复制
sudo groupadd www-data
sudo usermod -a -G www-data ubuntu
sudo chown root:www-data /home
sudo chmod -R 775 /home

这应该可以运行

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47085505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档