首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python不能在同一个目录中导入两个相同的类中的一个。

Python不能在同一个目录中导入两个相同的类中的一个。
EN

Stack Overflow用户
提问于 2020-04-02 14:55:05
回答 1查看 65关注 0票数 0

在运行python脚本时,我试图从同一个目录从两个不同的脚本导入两个不同的类。第一次成功,第二次失败,原因我还没有弄清楚。

我从导入的脚本中提取了所有有用的代码,并使它们相同,只是类名在测试解决方案时试图限制变量的数量。

当问题发生时,我一直跟随着这两本指南。

我相信这是一个令人麻木的简单的解决办法,但我还没有弄清楚。

谢谢你的帮助。

Python版本

Python 3.6.9 :: Anaconda, Inc.

文件夹结构

  • MSAs
    • __init__.py
    • lexer.py
    • main.py
    • parser.py

文件内容

__init__.py

代码语言:javascript
复制
"""empty file"""

lexer.py

代码语言:javascript
复制
class Lexer():
    def __init__(self):
        self.hello = 'world'

parser.py

代码语言:javascript
复制
class Parser():
    def __init__(self):
        self.hello = 'world'

main.py

代码语言:javascript
复制
from lexer import Lexer
from parser import Parser

p = Parser()

MSAs 文件夹运行脚本的

msas> python main.py

ImportError: cannot import name 'Parser'

互联网让我尝试的事情,以及他们的结果()

我觉得其中有几个是常识,认为它们不起作用,但我试图用尽我所有的选择。

如果不使用子目录:

No module named '__main__.lexer'; '__main__' is not a package

import parser.Parser

No module named 'parser.Parser'; 'parser' is not a package

from . import Parser

AttributeError: module 'parser' has no attribute 'Parser'

将工作直接插入到sys.path中

ImportError: cannot import name 'Parser'

切换导入语句的顺序

ImportError: cannot import name 'Parser'

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-02 14:58:54

parser是Python的标准库中的一个模块,所以我相信您的代码试图从该文件中导入Parser,而不是从parser.py文件导入Parser。由于该对象不存在,因此您将得到所看到的ImportError

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60994516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档