【问题标题】:ModuleNotFoundError in python (spyder project)python中的ModuleNotFoundError(spyder项目)
【发布时间】:2023-10-15 23:23:01
【问题描述】:

1.环境

我正在使用 Anaconda/Spyder 工具在 Windows 10 中工作。 我有一个 python 项目组织如下。

folder_project
  test_all.py
  folder_utils
     __init__.py
     function1.py
  folder_tests
     __init__.py
     test_function1.py

init.py 文件是空文件。 实现代码覆盖率的基本想法(也许可以改进方法)是:

  • 一个 python 文件以不同方式测试一个函数
  • test_function1.py 将包含每个测试的一个函数:

    def test_001(): ...

  • test_all.py 文件将调用所有 test_functionXXX.py 文件的所有函数

在 Spyder 中,我注意在 PYTHONPATH 中添加 folder_project。

2。问题

我在导入 folder_tests 包时遇到错误...

我在 test_all.py 中有

import folder_tests.test_function1
def main():
   # Testing function1
   test_function1.test001()

我收到以下错误:

ModuleNotFoundError: No module named 'folder_tests.test_function1'

如果我这样做

import folder_tests

我没有错误消息,但是我对此无能为力...

如果我在中更改导入语句

from folder_tests import test_function1

我收到以下错误:

ImportError: cannot import name 'test_function1' from 'folder_tests'

请问您知道我该如何纠正吗?

提前感谢您的帮助!

最佳,

皮埃罗

【问题讨论】:

    标签: python module package importerror


    【解决方案1】:

    错误的根源似乎与python无关,而是与spyder有关。 我停止并重新启动了 spyder,它没有工作,我简化了文件名,它工作了,然后我重新使用了以前的文件名,它仍然工作...... 这里有点头疼...

    抱歉打扰了。

    最佳,

    皮埃罗

    【讨论】:

      【解决方案2】:

      Pierrot,关于你的回答,我同意,这真是令人头疼,但我在 2 个场景中找到了问题的根源:

      1. 如果您引用的文件夹不在 Spyder 识别为项目文件夹的文件夹中,则会出现此问题。在您的情况下,这将是 folder_project。如果您选择的文件夹未被识别为项目文件夹,它会告诉您,而不是打开它,可以通过转到 Projects->Open Project 进行测试。可以通过Project->New Project->Existing Directory

        修复
      2. 文件夹名称与文件名相同(特定于 Spyder,使用 pycharm 等其他 IDE 不是问题) 我的文件夹名称与文件名相同,例如名为“email”的文件夹和名为“email.py”的文件。当我尝试导入时,它引发了 'ModuleNotFoundError: No module named 'email'。

      这是匹配文件和文件夹名称失败的版本:

      import email.email as e
      

      这是使用区分文件(添加和“s”)和文件夹名称的版本:

      import emails.email as e
      

      【讨论】:

        最近更新 更多