функция не имеет атрибута - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь написать этот код, и он отлично работает в pycharm. Но всякий раз, когда я пытался запустить его после преобразования в exe, он выдает мне сообщение «функция не имеет атрибута« read_exif »». Пакет, который я использую для этой функции, не установлен вручную, но он работает без ошибок в pycharm.

def Raw_Fits(self, raw_path, save_location):
    paths = [raw_path]
    bad_pixels = rawpy.enhance.find_bad_pixels(paths)

    for path in paths:
         with rawpy.imread(path) as raw:
             rawpy.enhance.repair_bad_pixels(raw, bad_pixels, method='median')
             rgb = raw.postprocess(no_auto_bright=True, use_auto_wb=False, gamma=None)
    a = np.array(rgb)
    print(a.shape)

    filename = raw_path
    raw_image = Raw(filename)
    buffered_image = np.array(raw_image.to_buffer())

    image = Image.frombytes('RGB', (raw_image.metadata.width, raw_image.metadata.height), a).convert('LA')
    xsize, ysize = image.size
    data1 = np.array(image.getdata())
    print(data1.shape)

    r = [(d[0]) for d in data1]
    g = [(d[1]) for d in data1]
    r_1 = np.array(r)
    g_1 = np.array(g)

    r_data = np.array(r_1.data)
    g_data = np.array(g_1.data)
    print(r_data.shape)

    r_data = r_data.reshape(ysize, xsize)
    g_data = g_data.reshape(ysize, xsize)

    a = cr2fits(raw_path, 0)
    a.read_cr2()
    a.read_exif()

    concat = r_data + g_data
    hdu = fits.PrimaryHDU(data=concat)
    hdu.header.set('OBSTIME', )
    hdu.header.set('OBSTIME', a.date)
    hdu.header.set('EXPTIME', a.shutter)
    hdu.header.set('APERTUR', a.aperture)
    hdu.header.set('ISO', a.iso)
    hdu.header.set('FOCAL', a.focal)
    hdu.header.set('ORIGIN', a.original_file)
    hdu.header.set('FILTER', a.colors[a.colorInput])
    hdu.header.set('CAMERA', a.camera)
    hdu.writeto(save_location, overwrite=True)
    print("Conversion Complete!")

Вот снимок экрана с проблемой, возникающей во время выполнения exe. Ошибка Sreenshot

1 Ответ

0 голосов
/ 06 ноября 2019

Если вы используете этот модуль github , то вы неправильно читаете данные EXIF.

Это должно быть сделано так:

from cr2fits import cr2fits
a = cr2fits(raw_path, 0)
a.read_cr2()
a.read_exif()

или

import cr2fits as crf
a = crf.cr2fits(raw_path, 0)
a.read_cr2()
a.read_exif()

То, что делает мой код, делает a экземпляром класса crf.cr2fitsкоторый имеет методы cr2fits.read_cr2() и cr2fits.read_exif(). a затем имеет возможность использовать эти методы. Если вы хотите узнать, как использовать классы, вы можете узнать больше, прибегая к помощи «Объектно-ориентированного программирования на Python».

Исправит ли это вашу проблему .exe - это другой вопрос;упаковка от питона до .exe трудна в лучшие времена.

...