Почему мой код на Python работает в Jupyter Notebook, но не как скрипт?

#python #jupyter-notebook #imagemagick #wand

#python #jupyter-notebook #imagemagick #wand

Вопрос:

Я пытаюсь открыть PDF в виде изображения с помощью Wand. Если я запускаю приведенный ниже код в Jupyter Notebook, он работает нормально. Если я запускаю код как скрипт из командной строки, я получаю сообщение об ошибке. По какой-то причине модуль не загружается при запуске за пределами Jupyter Notebook. У кого-нибудь есть какие-либо предложения?

Windows

Python 3.7.2 (64-разрядный)

 from wand.image import Image

with Image(filename="C:/test.pdf", resolution=300) as img:
    print(type(img))
  

Это сообщение об ошибке:

 Traceback (most recent call last):
  File "C:Untitled.py", line 7, in <module>
    from wand.image import Image
  File "C:Usersspencer.randAppDataLocalProgramsPythonPython37libsite-packageswandimage.py", line 18, in <module>
    from . import compat
  File "C:Usersspencer.randAppDataLocalProgramsPythonPython37libsite-packageswandcompat.py", line 25, in <module>
    abc = collections.abc if PY3 else collections
  File "C:Usersspencer.randAppDataLocalProgramsPythonPython37libcollections__init__.py", line 55, in __getattr__
    raise AttributeError(f'module {__name__!r} has no attribute {name!r}')
AttributeError: module 'collections' has no attribute 'abc'
  

Ответ №1:

Похоже, что проблема с wand и коллекциями была исправлена 2 недели назад: https://github.com/emcconville/wand/pull/398

Попробуйте обновить установку wand: pip install --upgrade wand

Комментарии:

1. Спасибо, но, похоже, у меня есть последняя версия: Требования уже обновлены: wand в c:usersspencer.randappdatalocalprogramspythonpython37libsite-packages (0.5.1)

2. Проблема @spencerrand решена в версии 0.5.2, которая к настоящему времени должна быть выпущена и распространена.

3. Это не объясняет, почему он работает в Jupyter notebook, но не как скрипт, но вы оба были правы, заставив скрипт работать. Я обновился до 0.5.2, что и предложила Даниэль, и это сработало. Спасибо @emcconville и Даниэль за вашу помощь.

4. @spencerrand возможно, что Jupyter notebook имеет доступ к другой версии в своей среде — на этом предположении был основан мой ответ.