使用 WSGI-Mod 在 Ubuntu-Apache 上托管的 Python Flask 应用程序上出现 FileNotFoundError

问题描述 投票:0回答:2

我有一个使用 WSGI-mod 托管在 ubuntu-apache 上的 python Flask 应用程序。它在我的本地 Windows 机器上完美运行,但在 ubuntu 机器上我似乎无法通过我的 python 脚本访问“./static/images/”?其他一切都有效,但这段代码由于某种原因无法正常工作并产生此错误。

我尝试搜索并编辑虚拟主机,但似乎没有任何效果。我无法解决这个问题。有什么想法吗?

给出错误的代码:

if session.get('logged_in'):
        directory = r'./static/images/'
        urls = []
        for filename in os.listdir(directory):
            if filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                urls.append(os.path.join(directory, filename))
            else:
                continue

错误信息:

[2021 年 2 月 17 日星期三 10:13:10.857968] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] [2021-02-17 10:13:10,856] 应用程序中出现错误:/cdn-controlpanel 上出现异常[GET],引用者:网站-uri [2021 年 2 月 17 日星期三 10:13:10.858012 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 回溯(最近一次调用):,引荐来源:网站-uri [2021 年 2 月 17 日星期三 10:13:10.858019 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 文件“/usr/local/lib/python3.8/dist-packages/flask/app.py” ,第 2447 行,在 wsgi_app 中,引用:website-uri [2021 年 2 月 17 日星期三 10:13:10.858025 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 响应 = self.full_dispatch_request(),引荐来源:网站-uri [2021 年 2 月 17 日星期三 10:13:10.858030 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 文件“/usr/local/lib/python3.8/dist-packages/flask/app.py” ,第 1952 行,在 full_dispatch_request 中,引用者:website-uri> [2021 年 2 月 17 日星期三 10:13:10.858035 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] rv = self.handle_user_exception(e),引用者:website-uri [2021 年 2 月 17 日星期三 10:13:10.858040 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 文件“/usr/local/lib/python3.8/dist-packages/flask/app.py” ,第 1821 行,handle_user_exception 中,referer: website-uri> [2021 年 2 月 17 日星期三 10:13:10.858045] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] reraise(exc_type, exc_value, tb),引荐来源:website-uri [2021 年 2 月 17 日星期三 10:13:10.858050 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 文件“/usr/local/lib/python3.8/dist-packages/flask/_compat.py” ,第 39 行,再加注中,referer:website-uri [Wed Feb 17 10:13:10.858055 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 提高值,引荐来源:website-uri [2021 年 2 月 17 日星期三 10:13:10.858060 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 文件“/usr/local/lib/python3.8/dist-packages/flask/app.py” ,第 1950 行,在 full_dispatch_request 中,引用者:website-uri> [2021 年 2 月 17 日星期三 10:13:10.858066 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] rv = self.dispatch_request(),referer: website-uri [2021 年 2 月 17 日星期三 10:13:10.858071 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] 文件“/usr/local/lib/python3.8/dist-packages/flask/app.py” ,第 1936 行,dispatch_request 中,referer: website-uri> [2021 年 2 月 17 日星期三 10:13:10.858076 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] return self.view_functionsrule.endpoint,referer: website-uri [Wed Feb 17 10:13:10.858081 2021] [wsgi:error] [pid 7746:tid 140653174441728] [client IP] 文件“/var/www/FlaskApp/App/app.py”,第 99 行,在 cdnControlpanel 中,引荐来源网址: 网站-uri [Wed Feb 17 10:13:10.858086 2021] [wsgi:error] [pid 7746:tid 140653174441728] [client IP] for filename in os.listdir(directory):,referer: website-uri [Wed Feb 17 10:13:10.858130 2021] [wsgi:error] [pid 7746:tid 140653174441728] [客户端 IP] FileNotFoundError: [Errno 2] 没有这样的文件或目录: './static/images/', 引用:网站-uri

python apache ubuntu flask wsgi
2个回答
1
投票

想通了。在 python 中声明目录路径时,“.”并不意味着相对于当前文件,而是相对于当前工作目录,可以使用 os.chdir('path/to/dir') 更改


0
投票

对于未来的任何人,您都可以执行以下操作:

import os
path = os.path.dirname(os.path.realpath(__file__))

现在您已获得当前 python 文件的路径。您可以像这样访问文件:

f = open( os.path.join(path, 'static/logo.png'), 'rb' )
© www.soinside.com 2019 - 2024. All rights reserved.