python 中的 ModuleNotFoundError(spyder 项目)

ModuleNotFoundError in python (spyder project)

1.环境

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

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

init.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 无关,而是 spyder. 我停止并重新启动 spyder,它没有用,我简化了文件名,它起作用了,然后我重新使用以前的文件名,它仍然起作用...... 有点头疼...

抱歉打扰了。

最佳,

小丑

Pierrot,关于你的回答,我同意,这很让人头疼,但我在两种情况下找到了问题的根源:

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

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

    的模块

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

import email.email as e

这是使用不同文件(添加和 's')和文件夹名称的版本:

import emails.email as e