如何使用带有 Ubuntu 和 apache 服务器的 Flask 读写文件

How to read and write files with Flask with Ubuntu and apache server

我正在尝试部署一个使用 Flask 写入和读取 png 图像的应用程序。在本地我可以 运行 我的脚本没有错误,除非我 运行 它在我的服务器上。

我在 DigitalOcean 上使用这个 guide 进行了部署。它使用 apache、wsgi 和 virtualenv。

这是我的代码示例:

from flask import Flask
from flask import send_file
from PIL import Image

app = Flask(__name__)

@app.route("/")
def hello():
    img = Image.new('RGB', (200, 100), (255, 255, 255))
    img.save('output.png')
    return send_file('output.png', mimetype='image/png')

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

我发现导致问题的原因是 img.save('output.png') 我还发现如果我尝试加载如下字体:font = ImageFont.truetype("Archive.otf", 60) 它也不起作用。我的 .png 和 .otf 文件与 __init__.py

在同一文件夹中

我想我弄乱了 apache 的配置或目录路径。如果我 运行 img.save 在 flask 环境之外它可以工作,所以这不是库或依赖项的问题。

您需要使用绝对路径,例如/var/www/somedir/somefile。这是因为 Apache 下的 Flask 没有给 Python 可用的工作目录。我建议使路径可配置。