从测试文件夹导入烧瓶模块失败

Che*_*zer 3 python flask

如何导入位于(在测试文件夹外)的模块,然后返回我的应用程序文件夹结构?

在 app_test.py 文件夹中我想要

from app.models import User
Run Code Online (Sandbox Code Playgroud)

跑步

/bin/python app_test.py
Run Code Online (Sandbox Code Playgroud)

我得到

no modules named app.models
Run Code Online (Sandbox Code Playgroud)

我有一个 app_test.py 文件,在我做了一些改组之前它一直有效,现在我不确定为什么我的导入在从我的测试文件夹运行测试时不起作用。我进入了我的应用程序主文件夹,这是基本布局减去多余的文件夹/文件:

/application

  /(leaving out folders bin build lib local...)
  /src
    /test
         __init__.py
         app_test.py
    /app 
         models.py
         forms.py
         __init__.py
         views.py
        /static
        /templates
        /tmp
Run Code Online (Sandbox Code Playgroud)

我的导入应该是什么?我注意到大型教程只使用 test.py 文件而不是文件夹。这是最好的方法吗?如果不是,我的测试文件夹应该放在哪里?它让我发疯。

Ben*_*ber 9

您需要从顶部运行 app_test.py(即“python test/app_test.py”)或修复 app_test.py 中的 python 路径:

import os
import sys
topdir = os.path.join(os.path.dirname(__file__), "..")
sys.path.append(topdir)
Run Code Online (Sandbox Code Playgroud)