«Скорее всего, из-за циклического импорта» в коде Python Visual Studio

#python #error-handling #compiler-errors #python-multithreading

Вопрос:

 import threading
import time

start = time.perf_counter()

def do_something():
    print("Sleeping in 1 second")
    time.sleep(1)
    print("Done sleeping")

t1 = threading.Thread(target=do_something)
t2 = threading.Thread(target=do_something)

finish = time.perf_counter()
print(f"Finished in {round(finish-start,1)} seconds(s) ")

 

Кто-нибудь знает, почему этот фрагмент кода возвращает эту ошибку при запуске и как ее исправить?:

Обратная связь (последний последний вызов): Файл «c:/Users/amanm/Desktop/Python/Python Крушение Course/threading.py», строка 1, в импортной резьбе

Файл «c:UsersamanmDesktopPythonPython Крушение Coursethreading.py», строка 12, в t1 = резьба.Ошибка атрибута потока(цель=do_something): частично инициализированный модуль «потоковая передача» не имеет атрибута «Поток» (скорее всего, из-за циклического импорта)

Когда я запускаю этот код в обычном режиме ожидания, он, кажется, работает, но в коде Visual Studio он не работает.

Комментарии:

1. Похоже, вы затеняете стандартный библиотечный модуль threading локальным модулем с тем же именем. Не используйте имена, уже принятые стандартной библиотекой.

2. И тебе тоже спасибо!!

Ответ №1:

Похоже , что файл программы, который вы создали, имеет имя threading.py , и вы импортируете библиотеку под названием threading . Это вызывает хаос в пространстве имен. Пожалуйста, переименуйте свою программу (например, threading-example.py ).

Ответ №2:

При импорте модулей python сначала проверяет файлы в вашем текущем рабочем каталоге, прежде чем проверять другие встроенные модули. Итак, у вас, вероятно, есть файл с именем threading.py у которого нет необходимых атрибутов. Другими словами, вы произвели круговой импорт.