Общее имя «коллекций» python не определено даже импортированными коллекциями

Ниже приводится config.py:

from collections import OrderedDict def test_config(fileName): tp_dict = collections.OrderedDict() with open("../../config/" + fileName, 'r') as myfile: file_str = myfile.read().replace(' ', '').split('\n') tp_list = [] for i, x in enumerate(file_str): x = x.strip() try: key = x[:x.index(':')].strip() value = x[x.index(':')+1:] if key == 'testpoint': pass else: tp_dict[key] = value.strip().split(',') except ValueError,e: pass if i % 4 == 0 and i != 0: tp_list.append(tp_dict.copy()) return tp_list 

Я использую функцию в другом файле test.py:

 import config a = config.test_config('test.txt') NameError: global name 'collections' is not defined 

Но если я скопирую весь код из config.py в начало test.py, а затем воспользуюсь функцией, то у меня нет ошибки (см. Код ниже). Может ли кто-нибудь объяснить это мне, пожалуйста? Я так так смущен. Большое спасибо!

 """ This is test.py """ from collections import OrderedDict def test_config(fileName): tp_dict = collections.OrderedDict() with open("../../config/" + fileName, 'r') as myfile: file_str = myfile.read().replace(' ', '').split('\n') tp_list = [] for i, x in enumerate(file_str): x = x.strip() try: key = x[:x.index(':')].strip() value = x[x.index(':')+1:] if key == 'testpoint': pass else: tp_dict[key] = value.strip().split(',') except ValueError,e: pass if i % 4 == 0 and i != 0: tp_list.append(tp_dict.copy()) return tp_list a = test_config('test.txt') 

Изменение from collections import OrderedDict для import collections .

Вы не импортируете коллекции, вы импортируете их только из коллекций. Просто напишите OrderedDict вместо collections.OrderedDict .

Вы не импортировали collections имен, а просто имя OrderedDict . Из-за этого вам просто нужно использовать bla = OrderedDict() вместо имени модуля.