在Python 3.6中,当导入模块时出现ModuleNotFoundError和ImportError。

9 浏览
0 Comments

在Python 3.6中,当导入模块时出现ModuleNotFoundError和ImportError。

已关闭。这个问题不能重现或是由打字错误引起。现在它不再接受回答。


这个问题是由打字错或是已不能重现了。虽然类似的问题可以在这里讨论,但这个问题已有解决方式,不太可能帮助到其他读者。

改进这个问题

我浏览了很多带有很多答案的问题,但似乎没有一个问题命中了要点。

我在一个名为test的文件夹下设置了两个文件config.pytest.py

config包含代码:

class Config:
    def __init__(self, name):
        self.name = name

而test包含:

try:
    # Trying to find module in the parent package
    from . import config
    print(config.debug)
    del config
except ImportError:
    print('Relative import failed')
try:
    # Trying to find module on sys.path
    import config
    print(config.debug)
except ModuleNotFoundError:
    print('Absolute import failed')

这是根据这个stack上的答案提供商的建议组成的。

不幸的是,当我直接调用它 from config import Config 时,两个错误都会出现,我得到了ModuleNotFoundError

我真的迷失在这个问题上了,不知道从哪里开始。

使用Python 3.6,atom.io作为我的IDE。

admin 更改状态以发布 2023年5月21日
0
0 Comments

#test.py
class Test:
    try:
        # Trying to find module in the parent package
        from . import config
        print(config.Config.debug)
        del config
    except ImportError:
        print('Relative import failed')
    try:
        # Trying to find module on sys.path
        import config
        print(config.Config.debug)
    except ModuleNotFoundError:
        print('Absolute import failed')
#config.py
class Config:
    debug = True
    def __init__(self, name):
        self.name = name

#config.py

在这个文件中,出现错误是因为变量debug = True不存在。

class Config:
    debug = True
    def __init__(self, name):
        self.name = name

#test.py

在这个文件中,错误出现是因为你在执行文件的导入打印语句并在直接访问变量,也就是说,你需要三个步骤……导入、类、变量>>> config.Config.debug

print(config.Config.debug)

希望它能对你有所帮助。

0