Pyinstaller - OSError: невозможно идентифицировать файл изображения (ПОДУШКА) - PullRequest
0 голосов
/ 01 мая 2019

Я создал скрипт на Python (3.7), чтобы пройти по каталогу и проверить изображения, чтобы рассчитать, сколько изображения занято объектом / вычислить количество пустого пространства на изображении.

Это работает в Python, однако при использовании PyInstaller для преобразования в исполняемый файл Windows он выдает OSError

for filename in os.listdir(path):
        image = Image.open(filename)
        width, height = image.size

        # Check if each pixel in image is white (255, 255, 255) and calculate percentage of image is white
        bg_count = next(n for n, c in image.getcolors(width * height) if c == (255, 255, 255))
        img_count = width * height - bg_count
        img_percent = img_count * 100.0 / width / height
        image.close()

        # If image doesn't meet requirements add to a csv created before the for loop
        if img_percent >= percentage:
            output_file.write(f"{filename} , {img_percent}%")
            output_file.write("\n")
            output_count += 1

OSError вызывается в строке image = Image.open (filename)

Traceback (most recent call last):
   File "main.py", line 47, in <module>
   File "main.py", line 23, in main
   File "site-packages\PIL\Image.py", line 2705, in open
OSError: cannot identify image file '1640681.jpg'
[5132] Failed to execute script main

1 Ответ

0 голосов
/ 02 мая 2019

Я недавно столкнулся с такой же ситуацией. Если наши обстоятельства такие же, вы можете хорошо работать с другим файлом формата изображения (.png, .bmp и т. Д.), Но с расширением .jpg, верно?

Проблема:

Это произошло, когда вы скомпилировали свой проект с использованием PyInstaller в виртуальной среде, такой как pipenv.

Решение:

Вам следует использовать Pip для установки всех зависимостей пакетов вашей программы, включая PyInstaller, и использовать PyInstaller напрямую в реальной среде для преобразования вашей программы в файл exe Windows.

Причина:

Я не эксперт, поэтому я действительно не знаю. Я думаю, что PyInstaller не может использовать некоторые Windows DLL, когда вы используете его в виртуальной среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...