Ошибка Python с dicom.read_file ()

Я пишу приложение, чтобы что-то делать с изображениями DICOM с помощью Python (с использованием библиотеки Pydicom). К сожалению, в самом начале я застрял с проблемой, которой не должно быть, согласно учебникам, которые я читал (fe здесь).

Код прост и выглядит так:

import dicom
dicomImage = dicom.read_file(MRI_img.dcm)
(...) other commands

Я установил Pydicom 0.9.9 с помощью pip (это видно, когда я использую pip list. Я пишу код в Ecplipse с помощью плагина PyDev.

Текстовый редактор обнаруживает недопустимую часть read_file с комментарием «Undefined variable from import: read_file», и компилятор говорит:

AttributeError: 'module' object has no attribute 'read_file'

Странно то, что даже когда я напрямую копирую код из одного из учебных пособий, доступных в сети, он остается неизменным. Использование решения из этой темы тоже не сработает. У меня постепенно заканчиваются разумные решения, и я до сих пор совершенно не понимаю, что не так.

P.S. Открытие примера кода чтения dicom из папки dicom / examples:

import sys
import dicom

# check command line arguments make sense
if not 1 < len(sys.argv) < 4:
print(__doc__)
sys.exit()

# read the file
filename = sys.argv[1]
dataset = dicom.read_file(filename)
(...)

При запуске из командной строки - работает без проблем. Это оставляет мне еще меньше идей, что не так с моим кодом.

Изменить: похоже, что только Eclipse / PyDev имеет эту проблему, когда я выполняю любой код из командной строки или командной строки Qt IPython, все работает без каких-либо проблем. Так в чем может быть проблема с Eclipse? Кто-нибудь из вас когда-нибудь пользовался этим?


person Jakub Król    schedule 26.01.2016    source источник
comment
вы можете добавить тег eclipse? также вы установили после перезапуска eclipse? Я знаю, что у меня проблема с IDLE   -  person Tadhg McDonald-Jensen    schedule 26.01.2016
comment
Да, я перезапустил eclipse, переустановил библиотеку pydicom, все, кроме модулей pydicom, работает нормально (numpy, simpleITK и т. Д.)   -  person Jakub Król    schedule 26.01.2016
comment
Извините, у меня возникли проблемы с установкой PyDev для eclipse, желаю вам удачи в решении вашей проблемы!   -  person Tadhg McDonald-Jensen    schedule 26.01.2016
comment
Что ж, спасибо, я сообщу, если найду какое-либо решение, теперь я на 100% уверен, что проблема с библиотекой pydicom, с ней что-то не так в Eclipse.   -  person Jakub Król    schedule 26.01.2016
comment
хорошо, только что узнал, что есть еще тег PyDev, который вы должны добавить, чтобы привлечь больше знающих людей, я даже не смог установить PyDev на свой компьютер :( Удачи в поиске решения!   -  person Tadhg McDonald-Jensen    schedule 26.01.2016
comment
Тег добавлен. Кажется, я нашел решение, установив pydicom 1.0.0 с официального сайта. Теперь он работает, но импорт и использование как pydicom, а не как dicom, как 0.9.9   -  person Jakub Król    schedule 26.01.2016


Ответы (4)


Я просто провожу небольшое исследование, и у меня точно такая же ошибка, как и у вас, я обнаружил, что причина проста, и что случилось со мной, что вызывает эту ошибку, я назвал свой файл как dicom.py ..... этот dicom.py является причиной, и вы знаете, что произойдет дальше, просто переименуйте его в testdicom.py или любое другое имя, если только не < strong> dicom.py и решит вашу проблему

person Hans Yulian    schedule 13.07.2016
comment
абсолютно верно, если вы назовете свой файл похожим на библиотеку, он создаст конфликт, спасибо, что указали на это - person pepe; 01.06.2017

Для информации на будущее:

Я не нашел причины, но нашел решение, если у вас есть аналогичная проблема (версия для Windows):

Сначала удалите текущую версию Python и удалите оставшуюся папку Python
Затем загрузите и установите свежий Python (x, y) здесь (версия 2.7.10 по состоянию на 26 января 2016 г.)
Затем введите папку Scripts в командной строке и введите pip uninstall pydcom.
Затем загрузите Pydicom из официальный сайт (1.0.0 на сегодняшний день)
Разархивируйте, введите папку в командной строке и введите python setup.py install
Подождите несколько мгновений до установки библиотеки.

После этого вы можете (по крайней мере, я мог бы) использовать библиотеку pydicom в PyDev без каких-либо проблем, следующий код:

import pydicom
import numpy

dicomLoc = "C:\\MR000000.dcm"
ds = pydicom.read_file(dicomLoc)
print(ds.pixel_array)

В результате на консоль был выведен правильный массив пикселей:

[[0 0 0 ..., 0 0 0]
 [0 0 0 ..., 0 0 1]
 [0 0 0 ..., 0 0 0]
 ..., 
 [0 3 0 ..., 0 2 5]
 [0 9 3 ..., 1 4 4]
 [0 2 0 ..., 0 7 1]]

С этого момента никаких проблем с Pydicom или PyDev не обнаружено.

person Jakub Król    schedule 26.01.2016

Думаю, вы что-то пропустили цитаты, значит, ошибка существует.

Код должен быть таким:

dicomImage = dicom.read_file("MRI_img.dcm");
person yinger_553    schedule 06.11.2017

Вы хотите использовать pydicom, и ваш код

import dicom
dicomImage = dicom.read_file(MRI_img.dcm)

Собственно, правильный код должен выглядеть так

import pydicom
dicomImage = pydicom.read_file('MRI_img.dcm')
person Milo Chen    schedule 20.09.2019