Python 无法导入同一目录中两个相同 类 之一
Python cannot import one of two identical classes int the same directory
当 运行 一个 python 脚本时,我试图从同一目录的两个不同脚本导入两个不同的 classes。
第一个有效,第二个失败,原因我一直无法弄清楚。
我从导入的脚本中提取了所有有用的代码,并使它们除了 class 名称外完全相同,以便在我测试解决方案时尝试限制变量的数量。
问题发生时我一直在遵循这两个指南
我确定这是一个简单得让人麻木的修复程序,但我还没有弄明白。
感谢您的帮助。
Python版本
Python 3.6.9 :: Anaconda, Inc.
文件夹结构
MSAs
__init__.py
lexer.py
main.py
parser.py
文件内容
__init__.py
"""empty file"""
lexer.py
class Lexer():
def __init__(self):
self.hello = 'world'
parser.py
class Parser():
def __init__(self):
self.hello = 'world'
main.py
from lexer import Lexer
from parser import Parser
p = Parser()
运行 来自 MSAs
文件夹的脚本
msas> python main.py
ImportError: cannot import name 'Parser'
互联网告诉我尝试的事情及其结果
我觉得其中一些是常识,它们没有用,但我试图用尽我所有的选择。
prefix the module name with a .
if not using a subdirectory:
No module named '__main__.lexer'; '__main__' is not a package
change to import parser.Parser
No module named 'parser.Parser'; 'parser' is not a package
change to from . import Parser
AttributeError: module 'parser' has no attribute 'Parser'
insert the working directly into sys.path
ImportError: cannot import name 'Parser'
切换导入语句的顺序
ImportError: cannot import name 'Parser'
parser
是 Python 的 standard library 中的一个模块,所以我相信您的代码试图从该文件导入 Parser
,而不是从您的 parser.py
文件。由于该对象不存在,您将看到 ImportError
。
当 运行 一个 python 脚本时,我试图从同一目录的两个不同脚本导入两个不同的 classes。 第一个有效,第二个失败,原因我一直无法弄清楚。
我从导入的脚本中提取了所有有用的代码,并使它们除了 class 名称外完全相同,以便在我测试解决方案时尝试限制变量的数量。
问题发生时我一直在遵循这两个指南
我确定这是一个简单得让人麻木的修复程序,但我还没有弄明白。
感谢您的帮助。
Python版本
Python 3.6.9 :: Anaconda, Inc.
文件夹结构
MSAs
__init__.py
lexer.py
main.py
parser.py
文件内容
__init__.py
"""empty file"""
lexer.py
class Lexer():
def __init__(self):
self.hello = 'world'
parser.py
class Parser():
def __init__(self):
self.hello = 'world'
main.py
from lexer import Lexer
from parser import Parser
p = Parser()
运行 来自 MSAs
文件夹的脚本
msas> python main.py
ImportError: cannot import name 'Parser'
互联网告诉我尝试的事情及其结果
我觉得其中一些是常识,它们没有用,但我试图用尽我所有的选择。
prefix the module name with a .
if not using a subdirectory:
No module named '__main__.lexer'; '__main__' is not a package
change to import parser.Parser
No module named 'parser.Parser'; 'parser' is not a package
change to from . import Parser
AttributeError: module 'parser' has no attribute 'Parser'
insert the working directly into sys.path
ImportError: cannot import name 'Parser'
切换导入语句的顺序
ImportError: cannot import name 'Parser'
parser
是 Python 的 standard library 中的一个模块,所以我相信您的代码试图从该文件导入 Parser
,而不是从您的 parser.py
文件。由于该对象不存在,您将看到 ImportError
。