Как устранить ошибку циклического импорта? - PullRequest
0 голосов
/ 11 июля 2020

Я работаю с модулем телефонные номера в Python. У меня проблема с циклическим импортом . Эта ошибка пропускается всякий раз, когда я запускаю файл с рабочего стола (C: \ Users \ AsadA \ Desktop ). Но возникает ошибка всякий раз, когда я пытаюсь запустить это в определенной папке (C: \ Users \ AsadA \ Desktop \ Python_projects \ 28-FindingTheNUMBER ). Пожалуйста, помогите мне!

Пример кода:

import phonenumbers

from phonenumbers import geocoder

from phonenumbers import carrier

from phonenumbers import timezone

my_Num=phonenumbers.parse("SAMPLE_NUM")

print(geocoder.description_for_number(my_Num,'en'))

print(carrier.name_for_number(my_Num,'en'))

print(timezone.time_zones_for_number(my_Num))

ОШИБКА:

Traceback (most recent call last):
  File "c:/Users/AsadA/Desktop/Python_projects/28-FindingTheNUMBER/phonenumbers.py", line 1, in <module>
    import phonenumbers
  File "c:\Users\AsadA\Desktop\Python_projects\28-FindingTheNUMBER\phonenumbers.py", line 2, in <module>
    from phonenumbers import geocoder
ImportError: cannot import name 'geocoder' from partially initialized module 'phonenumbers' (most likely due to a circular import) (c:\Users\AsadA\Desktop\Python_projects\28-FindingTheNUMBER\phonenumbers.py)

1 Ответ

1 голос
/ 11 июля 2020

Вы импортируете телефонные номера модуля, используя «импорт телефонных номеров», а затем импортируете соответствующие определения внутри этого модуля в следующих нескольких строках. Они избыточны.

Фиксированный код:

import phonenumbers

my_Num=phonenumbers.parse("SAMPLE_NUM")

print(phonenumbers.geocoder.description_for_number(my_Num,'en'))

print(phonenumbers.carrier.name_for_number(my_Num,'en'))

print(phonenumbers.timezone.time_zones_for_number(my_Num))

Или что-то вроде этого:

from phonenumbers import (
    parse,
    geocoder,
    carrier,
    timezone,
)

my_Num=parse("SAMPLE_NUM")

print(geocoder.description_for_number(my_Num,'en'))

print(carrier.name_for_number(my_Num,'en'))

print(timezone.time_zones_for_number(my_Num))
...