Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决循环导入错误?_Python_Python 3.x_Import_Python Import_Importerror - Fatal编程技术网

Python 如何解决循环导入错误?

Python 如何解决循环导入错误?,python,python-3.x,import,python-import,importerror,Python,Python 3.x,Import,Python Import,Importerror,我正在使用Python中的电话号码模块。我正在处理循环导入的问题。每当我从桌面位置(C:\Users\AsadA\desktop)运行文件时,此错误将忽略。但是,每当我试图在特定文件夹中运行此操作时(C:\Users\AsadA\Desktop\Python\u projects\28 FindingTheNUMBER),它就会引发一个错误。请帮帮我 示例代码: import phonenumbers from phonenumbers import geocoder from phonen

我正在使用Python中的电话号码模块。我正在处理循环导入的问题。每当我从桌面位置(C:\Users\AsadA\desktop)运行文件时,此错误将忽略。但是,每当我试图在特定文件夹中运行此操作时(C:\Users\AsadA\Desktop\Python\u 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)
回溯(最近一次呼叫最后一次):
文件“c:/Users/AsadA/Desktop/Python_projects/28 FindingTheNUMBER/phonenumbers.py”,第1行,在
导入电话号码
文件“c:\Users\AsadA\Desktop\Python\u projects\28 FindingTheNUMBER\phonenumbers.py”,第2行,在
从电话号码导入地理编码器
ImportError:无法从部分初始化的模块“PhoneNumber”导入名称“geocoder”(很可能是由于循环导入)(c:\Users\AsadA\Desktop\Python\u projects\28 FindingTheNUMBER\PhoneNumber.py)

您正在使用“导入电话号码”导入模块电话号码,然后在接下来的几行中导入该模块内的相关定义。它们是多余的

固定代码:

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))

您可能将文件命名为“phonenumber.py”。如果要在python中导入某些内容,请确保文件名与导入的文件名不同。如果相同,则会产生错误。
发生这种情况的原因是,导入的文件名与导入的文件名存在相同的名称冲突。如果出现这种情况,python将始终优先处理当前目录下的文件。
那么,假设您的代码如下所示。

import xyz
print(xyz.version)
您的文件名是“xyz.py”。Python编译器现在看到有两个同名的文件“xyz.py”,一个在安装Python的脚本文件夹中,另一个在我们正在工作的当前目录中。因此,python编译器选择要从当前工作目录导入的文件。
因此,python读取第一行import xyz,它从当前目录导入文件,这意味着它再次导入该文件并开始读取它。在这种情况下,第一行再次是导入xyz,然后它再次导入当前文件夹中的xyz,导致循环发生。
这被称为循环。


因此,简而言之,更改文件名可以解决问题。

无效您是否尝试了第二种解决方案?