在apache服务器中未找到Flask模块

dkqlctbz  于 2023-03-19  发布在  Apache
关注(0)|答案(2)|浏览(143)

我从(https://pythonprogramming.net/creating-first-flask-web-app/)运行整个教程,我遇到了以下问题。我目前运行的是apache2服务器,这是错误日志。

[Wed Feb 15 16:57:45.115664 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] mod_wsgi (pid=29447): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[Wed Feb 15 16:57:45.115711 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] mod_wsgi (pid=29447): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
[Wed Feb 15 16:57:45.115730 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] Traceback (most recent call last):
[Wed Feb 15 16:57:45.115749 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328]   File "/var/www/FlaskApp/flaskapp.wsgi", line 12, in <module>
[Wed Feb 15 16:57:45.115799 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328]     from FlaskApp import app as application
[Wed Feb 15 16:57:45.115819 2017] [wsgi:error] [pid 29447:tid 140623447664384] [remote 182.55.172.115:9328] ImportError: No module named FlaskApp

我的配置文件如下

<VirtualHost *:80>
                ServerName xxx.xxx.xxx.xxx
                ServerAdmin Admin@server.com
                WSGIDaemonProcess FlaskApp python-path=/var/www/FlaskApp:/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/site-packages
                WSGIProcessGroup FlaskApp
                WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
                <Directory /var/www/FlaskApp/FlaskApp/>
                        Order allow,deny
                        Allow from all
                </Directory>
                Alias /static /var/www/FlaskApp/FlaskApp/static
                <Directory /var/www/FlaskApp/FlaskApp/static/>
                        Order allow,deny
                        Allow from all
                </Directory>
                ErrorLog ${APACHE_LOG_DIR}/error.log
                LogLevel warn
                CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我的Flask应用程序wsgi文件如下

#!/usr/bin/python
#import sys
import os, sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp")

activate_this = '/var/www/FlaskApp/FlaskApp/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

from FlaskApp import app as application
application.secret_key = 'gfuaskdf24432giafsd23khk'

和my init.py如下所示

from flask import Flask

app = Flask(__name__)

@app.route('/')
def homepage():
    return "Hi there, how ya doin?"

if __name__ == "__main__":
    app.run()

我很确定这个问题不是在 init.py上,而是可能在wsgi文件或虚拟机上。我尝试了许多方法,但都无济于事(但我也可能做错了)。
需要社区的帮助。

nnsrf1az

nnsrf1az1#

你确定你的初始化文件命名为__init__.py了吗?我看到你在你的问题中引用了init.py。这可能是__init__.py显示python它是一个包的一部分的问题,当你导入其他包时,它会首先查看那个文件。如果你没有正确地命名它,也许这就是为什么它说它找不到你需要的模块的原因?

zc0qhyus

zc0qhyus2#

我知道这个问题问得太久了,但是,现在,如果你不使用python虚拟环境,你也会面临这个问题:
我正在使用APACHE 2- mod_wsgi。用于生产目的。我的操作系统:Linux / Ubuntu操作系统。
我使用虚拟环境不是因为服务器上没有其他项目,所以没有必要。
配置完所有内容后,我收到了以下错误:
导入错误:无法从“flask”(未知位置)导入名称“Flask”
在简历中,www-data无法导入“Flask”。它不是flask,而是Flask
我给你的建议:
a)像www-data用户一样获得正确的视图,并像这样做:

su -s /bin/bash www-data

现在,提示符已更改为www-data。
下一步:
B)作为www-data,解析以下内容:

python3 -c "from flask import Flask;"

您将在/var/log/apache 2/error. log中看到相同的消息
如何解决这个问题,而不是像疯了一样四处搜索,更改代码等...
c)给予用户www-data读取Python3的dist-packages文件夹的权限,如下所示:

sudo chown -R www-data:www-data /usr/local/lib/python3.10/dist-packages/
sudo chmod -R u+r /usr/local/lib/python3.10/dist-packages/

d)现在,只需重复b项,错误就消失了!重新启动apache 2,刷新页面!
开心点!

相关问题