Python导入image2gif的问题

Dan*_*zik 6 python pip

我知道我安装了所有软件包(pip冻结)我在Windows 10机器上运行python3.4并且遇到了奇怪的依赖问题

test.py:

from images2gif import writeGif
from PIL import Image, ImageSequence
import os

file_names = ['output\donkey-1.png', 'output\donkey-2.png']

images = [Image.open(fn) for fn in file_names]

size = (600,350)
for im in images:
    im.thumbnail(size, Image.ANTIALIAS)

filename = "test.gif"
writeGif(filename, images, duration=0.5, subRectangles=False)
Run Code Online (Sandbox Code Playgroud)

运行test.py会出现以下错误,无法在Web上的任何其他位置找到此错误

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    from images2gif import writeGif
  File "C:\Python34\lib\site-packages\images2gif\__init__.py", line 1, in <module>
    from images2gif import readGif as readGif
ImportError: cannot import name 'readGif'
Run Code Online (Sandbox Code Playgroud)

小智 9

我只看了实际的存储库源代码:它使用Python 2样式相对导入.也就是说,images2gif不支持开箱即用的Python 3.

现在的一个解决方案可能是从pypi下载源文件,解压缩(不确定Windows是否喜欢tar.gz文件),cd进入目录并在其上运行2to3:

2to3 -w .
Run Code Online (Sandbox Code Playgroud)

然后手动安装:

python3.4 setup.py install
Run Code Online (Sandbox Code Playgroud)

但可能更容易,只看到结果2to3:手动更改已安装的软件包中的两个import语句(in __init__.py):

-from images2gif import readGif as readGif
-from images2gif import writeGif as writeGif
+from .images2gif import readGif as readGif
+from .images2gif import writeGif as writeGif
Run Code Online (Sandbox Code Playgroud)

因为看起来其他一切都与PY3K兼容; images2gif这两个导入语句前面的点使PY3K相对导入正确.