【问题标题】:How to fix ModuleNotFoundError in python with Visual Studio Code如何使用 Visual Studio Code 修复 Python 中的 ModuleNotFoundError
【发布时间】:2019-04-16 01:00:55
【问题描述】:

我正在开发一个用于学习 Python 的学生学位的基本管理器,我也在使用 VS Code 和 python 3.7.3 环境进行编码。

我创建了一个名为clases 的包,其中包含__init__.pyNotaParcial.py 文件,在NotaParcial.py 中也只有一个名为NotaParcial 的类。

当我尝试使用语法 form clases.NotaParcial import * 使用其他包中的类时出现问题

我已经尝试在包中放入一个__init__.py 文件。

错误信息是:

发生异常:ModuleNotFoundError 没有名为“clases”的模块
文件“C:\Users\Usuario\OneDrive\Ingenieria\Semestre 3\Parcial 1\Modelamiento de software\Tareas\PySAcademico\prueba\prueba.py",行 1、在 从 clases.moduloNotaParcial 导入 NotaParcial 文件“C:\Users\Usuario\AppData\Local\Programs\Python\Python37\Lib\runpy.py”, 第 85 行,在 _run_code 中 exec(code, run_globals) 文件 "C:\Users\Usuario\AppData\Local\Programs\Python\Python37\Lib\runpy.py", 第 96 行,在 _run_module_code 中 mod_name, mod_spec, pkg_name, script_name) 文件 "C:\Users\Usuario\AppData\Local\Programs\Python\Python37\Lib\runpy.py", 第 263 行,在 run_path 中 pkg_name=pkg_name, script_name=fname)

我试图从位于包的上级路径中的文件中调用该类并且它可以工作。 我尝试使用 Visual Studio 2017 Community 重复该过程,并且在该 IDE 中,它可以正常工作并且问题没有出现。

【问题讨论】:

    标签: python python-3.x visual-studio-code


    【解决方案1】:

    首先,有一个可用的指南,其中提到了将here 大写

    我建议使用样式指南。它使奇怪的编码变得容易得多。

    回到你的课堂。有多种编写模块的方法,我很乐意给你两个不同的例子。其中之一是编写一个类似于类的模块,它基本上是一个文件夹。该文件夹中的所有内容都属于该类。这将所有内容放在一起,并且还取决于您的文件结构。

    想象一下具有以下文件结构

    • someclass [文件夹]
      • __init__.py [文件]
    • run.py [文件夹]

    注意someclass 不包含任何对run.py 文件中的导入很重要的大写字母。稍后再谈。您可能想知道 __init__.py 中有什么。

    class NotaParcial(object):
        ... 
    

    注意:类名总是以大写字母开头。在编码时,它会提醒您正在使用类对象。

    为了在我们的run.py 中导入NotaParcial 类,我们只需这样做:

    from someclass import NotaParcial
    

    from 关键字后面的 someclass 表示您从中导入的文件夹。 NotaParcial 类是 __init__.py 中可用的类。 __init__.py 将其所在的文件夹初始化为一个模块。

    如果您创建一个包,这在使用 setuptools 时效果很好。

    现在,假设我们遇到了您的情况,我们想从一个未命名为 __init__.py 的文件中导入一个类。 __init__.py 仍然是必需的,更多信息 here

    • someclass [文件夹]
      • __init__.py [文件] [空]
      • super_duper_scraper.py [文件]
    • run.py [文件夹]

    __init__.py 是空的,这对我们来说已经足够了,我们的示例类移到了super_duper_scraper.py。为了从前面的示例中导入相同的类,您必须像这样导入它:

    from someclass.super_duper_scraper import NotaParcial
    

    了解这一点后,您应该能够解决您的异常:Exception has occurred: ModuleNotFoundError No module named 'clases'

    【讨论】:

      【解决方案2】:

      我认为您只需从导入语句中删除 clases.

      就这样,

      from NotaParcial import *
      

      【讨论】:

      • 仍然无法正常工作:c,如果您能给我另一个想法,如果您需要更多信息,请向我询问。
      • 重要的是要知道,如果我尝试从 python IDLE 运行文件也不起作用
      猜你喜欢
      • 1970-01-01
      • 2020-08-02
      • 2022-12-27
      • 2021-05-09
      • 1970-01-01
      • 2021-04-07
      • 2018-10-09
      • 1970-01-01
      • 2021-06-04
      相关资源
      最近更新 更多