AttributeError: объект 'модуль' не имеет атрибута 'fsdecode'; PYTHON 2.7; Mac OS X

Я нашел сценарий в PYTHON. Необходимо запустить его, чтобы обрезать изображения по размеру. Почему возникает эта ошибка и как ее исправить? (Установлен Python 2.7 + установлен PIL для текущего скрипта + Imaging 1.1.7; Mac OS)

from __future__ import division
from __future__ import print_function
from __future__ import absolute_import

import argparse
import os
from PIL import Image

parser = argparse.ArgumentParser()
parser.add_argument('--image_dir', help='Directory of images to resize')
args = parser.parse_args()

image_dir = os.getcwd() + "/" + args.image_dir

for f in os.listdir(image_dir):
    filename = os.fsdecode(f)
    image = Image.open(image_dir + '/' + filename)
    print(image_dir + '/' + filename)
    height, width = image.size
    if width > 1000:
        resize_amt = 1000 / width
        new_height = int(round(height * resize_amt))
        image = image.resize((new_height, 1000))
        image.save(os.getcwd() + "/" + image_dir + "/" + filename)

После того, как я исправил все проблемы, в Терминале появляется этот текст:

Александр-MacBook-Air: jaskier $ python resize.py --image_dir = / Images /

Отслеживание (последний вызов последний):

Файл resize.py, строка 16, в filename = os.fsdecode (f).

AttributeError: объект 'модуль' не имеет атрибута 'fsdecode'


person J A S K I E R    schedule 17.03.2018    source источник
comment
В нем говорится, что модуль «os» не имеет функции «fsdecode».   -  person Michael Ilie    schedule 17.03.2018
comment
Это может означать, что вы используете версию python, у которой нет fsdecode в модуле os ...   -  person Michael Ilie    schedule 17.03.2018
comment
python --version Python 2.7.10 Уже пытался установить 3.6, но системный PATH перезаписан на 2.7 -_-   -  person J A S K I E R    schedule 24.03.2018
comment
Хммм, попробуйте doin python3 —version   -  person Michael Ilie    schedule 24.03.2018
comment
* Установили 3.6.4 вручную с python.org/downloads Результат: последний вход: суббота, 24 марта. 14:25:50 на ttys000 Oleksandrs-MacBook-Air: ~ jaskier $ python --version Python 2.7.10   -  person J A S K I E R    schedule 24.03.2018
comment
Да, но команда python по умолчанию соответствует версии вашей системы; если вы попытаетесь указать команду «python3», возможно, она сработает   -  person Michael Ilie    schedule 25.03.2018


Ответы (1)


Есть разница Хью между Python 2.7 (родной для Mac OS) и Python 3+ (должен устанавливаться с помощью терминала или https://www.python.org/download/releases/3.0/

Терминал:

pip3 install Pillow

Это поможет установить зависимости между PIL и Python3 ... (кроме того, проверьте Python3 в папке:

/Library/Frameworks/Python.framework/Versions/3.6/bin/ Если вы все сделали правильно, тоже должен быть pip3.

После этих шагов у меня есть несколько ошибок кода, но нет ошибок модулей. Надеюсь, это кому-то поможет.

person J A S K I E R    schedule 24.03.2018