Python pytest';没有名为…'的模块;用于在测试模块内导入

Python pytest';没有名为…'的模块;用于在测试模块内导入,python,flask,pytest,importerror,pythonpath,Python,Flask,Pytest,Importerror,Pythonpath,我发现了一些类似的问题,但没有完全解决我的问题(例如) 我的项目结构如下: MyApp | +--MyApp | | | +--__init__.py | +--app.py | +--config.py | +--tests | +--__init__.py +--test_app.py 在我的test_app.py中,我导入了app.py,它工作得很好 从MyApp导入应用程序 但是在app.py中,我像这样导入config.p

我发现了一些类似的问题,但没有完全解决我的问题(例如)

我的项目结构如下:

MyApp
 |
 +--MyApp
 |   |
 |   +--__init__.py
 |   +--app.py
 |   +--config.py
 |
 +--tests
     |
     +--__init__.py
     +--test_app.py
在我的test_app.py中,我导入了app.py,它工作得很好

从MyApp导入应用程序

但是在app.py中,我像这样导入config.py

导入配置

通过此设置,我可以运行应用程序模块,但pytest无法导入“config”,并引发:

ImportError:没有名为'config'的模块

当我将app.py中的import语句更改为:

来自MyApp导入配置

但是,尝试运行应用程序时出现错误:

ImportError:没有名为“MyApp”的模块


通过阅读其他问题,我确信
PYTHONPATH
有问题,我就是不知道如何解决这个问题。

将PYTHONPATH变量设置为项目的根文件夹,并设置与此相关的所有其他路径

在您使用的同一文件夹中

导入模块

如果从您使用的其他文件夹引用

来自模块导入类


如上所述更改项目中的引用,应该会得到解决

谢谢您的建议!我仍然遇到同样的问题。我将virtualenv中的PYTHONPATH设置为根文件夹(如下所示),但结果是一样的。我找到了一个解决方案,该解决方案可以工作,但似乎不是很优雅:在导入“app.py”之前,我在test\u app.py中添加了
import sys,os sys.path.append(os.path.join(os.path.dirname(\u file\u),“…”,“,”MyApp'))
。还有更优雅的方式吗?