Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当多个(子)文件夹具有相同名称时,导入模块_Python_Python 3.x_Pytest_Python Import - Fatal编程技术网

Python 当多个(子)文件夹具有相同名称时,导入模块

Python 当多个(子)文件夹具有相同名称时,导入模块,python,python-3.x,pytest,python-import,Python,Python 3.x,Pytest,Python Import,如果项目目录和子文件夹具有相同的名称,则在运行pytest时会出现导入错误 我尝试重命名子文件夹,然后没有问题 例如,使用以下文件夹结构: 计划/ 计划/ tools.py 福/ foofile.py 酒吧/ 单元测试/ test_foofile.py 在project/foo/foofile.py中,我们尝试从project/project/tools.py导入类: 从project.tools导入ClassA 然后从一级目录项目运行python-m pytest时,我得

如果项目目录和子文件夹具有相同的名称,则在运行pytest时会出现导入错误

我尝试重命名子文件夹,然后没有问题

例如,使用以下文件夹结构:

  • 计划/
    • 计划/
      • tools.py
    • 福/
      • foofile.py
    • 酒吧/
    • 单元测试/
      • test_foofile.py
在project/foo/foofile.py中,我们尝试从project/project/tools.py导入类:

从project.tools导入ClassA
然后从一级目录项目运行
python-m pytest
时,我得到以下错误:

ImportError:无法从“project.tools”(未知位置)导入名称“ClassA”


有没有办法告诉解释器应该查看子文件夹project?

您是否尝试了project.project.tools import ClassA中的
?您是否验证了当前工作目录是内部
project
文件夹,同时确保正常导入机器无法找到外部模块?@Post169:这不是一个选项,因为该项目在其他项目中用作子模块。那么无法保证目录名。看起来您想从绝对路径导入。这里有一个问题:这取决于几个方面:当您运行pytest命令时,您在哪个文件夹中?是否在每个子文件夹中都放置了init.py文件?