【问题标题】:WSGI can't find imports within same directoryWSGI 在同一目录中找不到导入
【发布时间】:2019-07-10 12:37:19
【问题描述】:

我正在尝试使用 Apache 和 WSGI 部署 Flask 服务器,但在加载我的应用程序主页时出现 500 错误。 Flask 和 Apache 本身似乎连接良好,但是当我查看我的 Apache 日志时,我收到以下错误 ModuleNotFoundError: No module named 'keys',其中 keys.py 是与我的 __init__.pyflask 文件位于同一目录中的文件。

我在 Apache 的可用站点中的 .conf 文件如下:

<VirtualHost *:80>
                ServerName SERVER'S IP
                ServerAdmin email@email.com
                WSGIScriptAlias / /var/www/FlaskApp/FlaskApp.wsgi
                <Directory /var/www/FlaskApp/FlaskApp/>
                        Order allow,deny
                        Allow from all
                </Directory>
                ErrorLog ${APACHE_LOG_DIR}/FlaskApp-error.log
                LogLevel warn
                CustomLog ${APACHE_LOG_DIR}/FlaskApp-access.log combined
</VirtualHost>

我的 .wsgi 文件如下:

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

from FlaskApp import app as application

我的目录结构如下:

如何获取 __init__.py 文件以查看同一目录中的其他 Python 文件? 感谢您的帮助。

【问题讨论】:

  • 您使用的是绝对导入还是相对导入?
  • 抱歉回复晚了,如果我这样做from myproject.keys import api_key,那么我可以让导入工作。我的项目的完整路径是/var/www/FlaskApp/myproject。我认为这与我的 .wsgi 文件中的 sys.path.insert(0,"/var/www/FlaskApp/") 行有关吗?虽然它确实有效,但我不想在任何时候从我的 git 存储库中提取生产/服务器代码时都不必更改它,而且它也不漂亮。

标签: python apache flask apache2 mod-wsgi


【解决方案1】:

在您的 wsgi.py 文件中,更改:

sys.path.insert(0,"/var/www/FlaskApp/")

作者:

sys.path.insert(0,"/var/www/FlaskApp/myproject")

【讨论】:

    猜你喜欢
    • 2021-02-17
    • 2021-09-24
    • 2017-11-28
    • 1970-01-01
    • 2014-10-04
    • 2020-12-07
    • 2017-08-06
    • 2016-03-04
    • 2012-07-16
    相关资源
    最近更新 更多