从模块导入函数时发生Python导入错误(ModuleNotFoundError),该模块从另一个模块导入类
我的文件结构如下所示:从模块导入函数时发生Python导入错误(ModuleNotFoundError),该模块从另一个模块导入类,python,importerror,Python,Importerror,我的文件结构如下所示: /dir/ main.py /src/ functionsfile.py classfile.py 函数文件有一个函数,它使用在类文件中创建的类。我把那个类导入 from classfile import ClassName (我也尝试过导入*) 仅使用print语句测试functionsfile中的函数,它似乎找到了类模块并使用ClassName很好,但是当我将该函数从functionsfile导入main.py脚本时
/dir/
main.py
/src/
functionsfile.py
classfile.py
函数文件
有一个函数,它使用在类文件
中创建的类。我把那个类导入
from classfile import ClassName
(我也尝试过导入*
)
仅使用print
语句测试functionsfile
中的函数,它似乎找到了类模块并使用ClassName
很好,但是当我将该函数从functionsfile
导入main.py
脚本时,它给出了错误:
ModuleNotFoundError: No module named 'classfile'
我尝试用以下两种方法导入函数:
from functionsfile import function
及
我不知道为什么会发生这种情况?看来您缺少\uuu init\uuuuuuuuuy.py文件。在/src/文件夹中添加后尝试导入。尝试
from src.classfile import ClassName
更改目录结构也会更好
/dir
/src
/class
classfile.py
functionsfile.py
main.py
正如宝瓶座所说,你需要在src文件夹中创建一个空白的\uuuu init\uuuuu.py
文件
并尝试将其作为
from src.classfile import *
在main.py文件中
我希望它对您有用:D为什么您将其他文件放在一个单独的文件夹中?您的依赖项中有一个循环:一个文件从另一个文件导入当前文件。如果出于某种原因,你不能没有它,你应该在需要它的函数中使用本地导入,但最有可能的是,你只需要重新组织你的代码来避免这个循环。我不知道你所说的循环是什么意思?main.py从函数导入从类文件导入的文件。对我来说是线性的?我只是尝试将init.py添加到两个文件夹中。。还有这个问题。我不认为我必须这么做,因为我有最新版本的python,它应该不再是必要的了。无论如何,我仍然会遇到错误:(这很有效!非常感谢!我想在导入functionsfile时,不在sys.path上的导入模块需要一个相对于使用该函数的最终文件的导入路径。
from src.classfile import *