【发布时间】:2017-04-10 17:23:10
【问题描述】:
我正在尝试部署一个使用 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,它可以工作,所以库或依赖项没有问题。
【问题讨论】:
-
你还没有说真正的问题是什么。
-
如果你像
img.save("/srv/my/server/path/output.png")一样提供img.save的绝对路径会发生什么(当然,对应的目录应该存在并且你的Apache必须有足够的权限才能写在那里)? -
我发现主要问题是apache或python没有写入和读取文件的权限。我试图弄清楚如何做到这一点,但还没有成功。
标签: python apache flask virtualenv wsgi