При совместном использовании Flask с python 3 и SimpleITK 0.10.0 я получаю ошибку AttributeError: тип объекта ‘object’ не имеет атрибута ‘__getattr__’

#python-3.x #flask #flask-restful

#python-3.x #flask #flask-restful

Вопрос:

Когда я запускаю код для обновления тегов в файле DCM с использованием SimpleITK 0.10.0 в Python 3 (https://itk.org/SimpleITKDoxygen010/html/Python_2DicomModifyTags_8py-example.html ) код работает так, как было объяснено.

в тот момент, когда я ввожу компоненты flask в код для создания API, я получаю

AttributeError: тип объекта ‘object’ не имеет атрибута ‘__getattr__’

ошибка. Код, который я использовал, выглядит следующим образом

 from __future__ import print_function
import SimpleITK
from flask import Flask
import time

app = Flask(__name__)


@app.route('/fuse')
def fuse():
    image = SimpleITK.ReadImage("CT/IMG-0002-000001.dcm")

    mean_image = SimpleITK.BoxMean( image, [3,3,1])

    all_keys = image.GetMetaDataKeys()
    for key in all_keys:
        mean_image.SetMetaData(key, image.GetMetaData(key))
    mean_image.SetMetaData("0008|0008", "DERIVEDSECONDARY")
    modification_time = time.strftime("%H%M%S")
    modification_date = time.strftime("%Y%m%d")
    mean_image.SetMetaData("0008|0031", modification_time)
    mean_image.SetMetaData("0008|0021", modification_date)

    print(mean_image.GetMetaData("0008|0031"))
    return "finish"
  

ошибка, которую я получаю, приведена ниже

 [2016-10-05 14:47:05,816] ERROR in app: Exception on /fuse [GET]
Traceback (most recent call last):
  File "c:python27libsite-packagesflaskapp.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "c:python27libsite-packagesflaskapp.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "c:python27libsite-packagesflaskapp.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "c:python27libsite-packagesflaskapp.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "c:python27libsite-packagesflaskapp.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "E:ITK_EXP_10exp2.py", line 24, in fuse
    keyable(mean_image, image, key)
  File "E:ITK_EXP_10exp2.py", line 12, in keyable
    mean_image.SetMetaData(key, image.GetMetaData(key))
  File "c:python27libsite-packagesSimpleITKSimpleITK.py", line 3579, in <lambda>
    __getattr__ = lambda self, name: _swig_getattr(self, Image, name)
  File "c:python27libsite-packagesSimpleITKSimpleITK.py", line 74, in _swig_getattr
    return _swig_getattr_nondynamic(self, class_type, name, 0)
  File "c:python27libsite-packagesSimpleITKSimpleITK.py", line 69, in _swig_getattr_nondynamic
    return object.__getattr__(self, name)
AttributeError: type object 'object' has no attribute '__getattr__'
127.0.0.1 - - [05/Oct/2016 14:47:05] "GET /fuse HTTP/1.1" 500 -
127.0.0.1 - - [05/Oct/2016 14:47:05] "GET /favicon.ico HTTP/1.1" 404 -
  

я новичок в кодировании на python, на самом деле новичок в самом кодировании, может кто-нибудь, пожалуйста, помочь мне исправить эту проблему или помочь мне понять проблему, чтобы я мог ее исправить?

Заранее спасибо

Ответ №1:

проблема заключалась в том, что разные версии python работали в pycharm и terminal. На терминале был запущен 2.7, а pycharm — 3.5. библиотека была обновлена в версии 3.5. извините за путаницу