之所以报错 module not found error, no module named "dicom.values"是因为 FSL python 无法调用conda python环境。这是可能是同时装了conda和FSL环境,两者都有Python导致的。
尽管网上有说是pydicom版本的问题,实际上目前的环境版本都正常。
而要修复这个bug,只要通过修改pydicom_compat.py
文件就可以完成。
主要修改两处,将 import pydicom
改成 import dicom as pydicom
;将 read_file = pydicom.read_file
改成 from pydicom.dicomio import read_file
既可。完整的pydicom_compat.py
文件路径和对应部分的codes如下。
./fsl/fslpython/envs/fslpython/lib/python3.7/site-packages/nibabel/pydicom_compat.py
try:
import pydicom # dicom as pydicom
except ImportError:
print("dicom does not exist !!! ")
try:
import pydicom
except ImportError:
have_dicom = False
else: # pydicom module available
from pydicom.dicomio import read_file
from pydicom.sequence import Sequence
# Values not imported by default
import pydicom.values
else: # dicom module available
print("dicom exist !!!")
# Values not imported by default
import dicom.values
from dicom.sequence import Sequence
read_file = pydicom.read_file
try:
import dicom as pydicom
except ImportError:
print("dicom does not exist !!! ")
try:
import pydicom
except ImportError:
have_dicom = False
else: # pydicom module available
from pydicom.dicomio import read_file
from pydicom.sequence import Sequence
# Values not imported by default
import pydicom.values
else: # dicom module available
print("dicom exist !!!")
# Values not imported by default
import pydicom.values
from pydicom.sequence import Sequence
from pydicom.dicomio import read_file
对于其他的fsl工具,也需要引用fsl的python而不是conda中提供的
/softwares/fsl/fslpython/envs/fslpython/bin/python