gpt4 book ai didi

Python IndexError 只发生在 osx 而不是 linux

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:52 25 4
gpt4 key购买 nike

我正在解析一个 RGB .jpg 文件,它在 linux 中解析得很好,但在 mac osx 中却不行。都是2.7.9版本

代码如下:

import numpy
import Image
from StringIO import StringIO
import urllib

def main():

# process terrain input
terrain_image = numpy.asarray(Image.open(StringIO(urllib.urlopen("http://i.imgur.com/IIv3E1K.jpg").read())))

# swap around axes and drop two of the three layers (they're all identical)
terrain_image = numpy.swapaxes(terrain_image, 2, 1)
terrain_image = numpy.swapaxes(terrain_image, 0, 1)
terrain_image = terrain_image[0]

print "Terrain Image Parsed!"

if __name__ == "__main__":
main()

在 Linux 中,我得到这个:

Terrain Image Parsed!

在操作系统中:

Traceback (most recent call last):
File "test.py", line 19, in <module>
main()
File "test.py", line 14, in main
terrain_image = terrain_image[0]
IndexError: too many indices for array

为什么会出现这种差异?

最佳答案

这可能是一个错误的猜测 -首先要做的是将对“Image.open (...)”的调用放在单独的一行中,然后打印、调试或以其他方式反省生成的对象看看你此时是否真的有一个图像。对您的数组对象执行相同的操作。

如果你得到一个正确的图像(以及数组看起来是否奇怪),我的猜测就会开始 - 当前打开图像的现代形式正在使用 from PIL import Image - 作为Pillow 是 Python 图像库的维护分支,不推荐使用简单的 import Imageimport Image 行中没有错误表明您使用的是过时的 Python-Imaging-Library。我建议从您的项目中卸载“PIL”(或 Python-PIL)——如果您(正如您应该的那样)使用 Python 包隔离机制,例如 virtualenv——并安装替代品“pillow”。 (当然,将上述行更改为 from PIL import Image)

如果您使用的是系统库,请检查您的 Linux 发行版是否有 Pillow 包(而不是 PIL)并安装它。否则,您将不得不求助于 virtualenv 或类似的机制,您可以在其中提供 Pillow 而不会干扰系统的其余部分。 (删除包管理器在任何 Linux 发行版中提供 Pillow 用于系统范围的枕头 - 通过 PIP 安装 Python 端 - 可能是灾难性的,因为系统将删除依赖于 PIL 的每个包,因为它不会“看到”它)

再一次,这可能根本不是错误原因。

关于Python IndexError 只发生在 osx 而不是 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30435349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com