Під час розробки програмного забезпечення на Python, особливо в середовищі Windows 10, можуть виникати різноманітні проблеми, що ускладнюють процес роботи. Одна з найпоширеніших проблем, з якою можуть зіткнутися розробники, – це циклічні конфлікти між модулями ‘collections’, numpy та matplotlib. У цій статті ми розглянемо цю проблему докладніше та запропонуємо рішення.
Зазвичай проблема з циклічними конфліктами виникає під час налагодження (debugging) коду у середовищі PyCharm за використання бібліотек numpy та matplotlib у поєднанні з модулем ‘collections’. Ось один зі сценаріїв, який може призвести до виникнення цієї проблеми:
1 2 3 4 5 6 7 8 9 |
# Генерування аналогового вихідного напруги та моніторинг аналогового напругового сигналу import numpy as np import matplotlib.pyplot as graph import nidaqmx from nidaqmx.stream_readers import AnalogMultiChannelReader from nidaqmx import constants import time import math as maths import datetime |
Коли спробуємо ввести режим налагодження (debug mode), може з’явитися наступна помилка:
1 2 3 4 5 6 7 8 9 10 11 12 |
[Fatal Python error: init_import_site: Failed to import the site module Python runtime state: initialized Traceback (most recent call last): ... AttributeError: partially initialized module 'collections' has no attribute 'namedtuple' (most likely due to a circular import) ... ImportError: cannot import name 'namedtuple' from partially initialized module 'collections' (most likely due to a circular import) ... Extension modules: numpy.core._multiarray_umath (total: 1) ... ImportError: IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE! ... |
Очевидно, що проблема пов’язана з циклічним імпортом модулів ‘collections’, numpy та matplotlib. Це може виникнути через те, що один модуль намагається імпортувати інший, але при цьому сам ще не був повністю ініціалізований.
Щоб вирішити цю проблему, можна спробувати декілька наступних кроків:
Якщо ж ці кроки не допомогли вирішити проблему, можна спробувати наступні альтернативні варіанти:
В разі невдачі усіх цих спроб, можна звернутися до спільноти розробників Python за порадою або допомогою у вирішенні проблеми. Важливо також запам’ятати, що усі дії, пов’язані з оновленням або перевстановленням бібліотек, краще виконувати у віртуальному середовищі Python, щоб уникнути впливу на роботу інших проектів.