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'))
。还有更优雅的方式吗?