我的Django网站托管在Azure上。
它允许用户上传照片。我需要一种方法让系统调整大小,并可能旋转照片。
看起来很简单,我尝试使用Pillow库,但是当它在本地工作时,由于多种原因它不会部署到Azure。如果需要,我可以具体说明,但有详细记录like here.
我甚至试图建造一个Pillow轮并部署它,但Azure拒绝加载它说它是错误的平台(即使我匹配Python 2.7版本 - 和32位)。我也尝试上传64位版本,但没有任何作用。所以在这一点上我只想让Pillow离开我,并要求在没有Pillow的情况下用Python实现这一目标。还有其他办法吗?
我尝试的事情的注释:
1)以正常方式安装枕头会给出这个熟悉的错误信息:
ValueError: zlib is required unless explicitly disabled using --disable-zlib, aborting
2)然后,我通过执行以下操作创建了一个轮子:pip wheel Pillow --wheel-dir=requirements
然而,这会在pip.log中产生以下错误:
Pillow-3.4.2-cp27-cp27m-win32.whl is not a supported wheel on this platform.
Pillow-4.1.1-cp27-cp27m-win32.whl is not a supported wheel on this platform.
我确信我在32位平台上运行Python 2.7,所以不确定为什么会抱怨它。
答案 0 :(得分:2)
经过几天的浪费,我发现了Pillow没有安装的原因。这不是因为轮子与平台不相容,而是因为轮子太旧了。
Azure目前正在使用pip版本1.5.6 - 对它们感到羞耻。这个版本不识别车轮。
以下是我修复此问题的方法:
转到Kudu DebugConsole:
https://[site_name].scm.azurewebsites.net/DebugConsole
激活您的VirtualEnv:
env\Scripts\activate
请注意,如果您运行pip --version
该版本号的年龄。
现在通过运行升级:
python -m pip install -U pip
请注意,您无法升级D:\ Python27中的默认点,因为您无权访问它,但您可以升级虚拟环境中的本地点。
现在运行pip --version
以确保您运行的是最新版本(即> = 9.0.1)。
现在在requirements.txt内部,您可以通过在顶部添加一行来告诉pip查找特定文件夹中的轮子,例如:
--find-links requirements
(这意味着它将搜索需求文件夹)
以下是如何创建枕轮。您可以在本地或Kudu控制台上运行它。如果您在本地运行它,请确保您的python版本与您在Azure(2.7或3.X)上使用的版本相匹配,并且默认情况下请确保使用32位版本。
pip install wheel
(仅当您没有安装车轮时)
pip wheel Pillow --wheel-dir=requirements
这会将两个文件复制到您的需求文件夹中:Pillow-X.whl和olefile-X.whl。如果要通过git push进行部署,请确保将这些内容添加到源代码管理中。将它们推送到服务器。
现在在Kudu DebugConsole中,您可以测试.whl文件(部署后)并通过运行测试安装:
pip install --no-index -r requirements.txt
这应该可以工作并安装Pillow!
部署时要特别注意Found compatible virtual environment.
或Creating python 2-7 virtual environment.
。前者就是你想要的。但是,如果您看到后者,则表示部署已对您的env
文件夹进行了抨击,并将您重置为pip 1.5.6。我不知道为什么它有时会这样做,但尝试在部署之后尽可能少地对env文件夹进行更改(即只是升级pip,就是这样)以避免这种情况。
答案 1 :(得分:0)
我对在Azure平台上安装Pillow感到无济于事。 但我使用手动调整大小和其他东西的日子早已不复存在。 我已经使用拇指https://thumbor.org/很长一段时间了。
只需设置相同的安全实例,然后使用它动态调整大小,裁剪和管理图像。
希望有所帮助
答案 2 :(得分:0)
还有另一个SO线程Microsoft Azure Django Python setup error Pillow,它有关于在Azure上安装Pillow的类似问题。我认为我的答案有助于解决您的问题。对我的解决方案有任何疑虑,请随时告诉我。