从测试文件夹导入Flask模块失败。

4

如何导入位于测试文件夹之上(即应用程序文件夹结构)然后返回到下面的模块?

在app_test.py文件夹中,我想要:

from app.models import User

运行中
/bin/python app_test.py

我理解

no modules named app.models

我有一个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

我的import应该是什么?我注意到这个巨型教程只使用了一个test.py文件而不是文件夹。这是最好的做法吗?如果不是,我的测试文件夹应该放在哪里?这真让我抓狂。

1个回答

10

你需要从顶层目录运行 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)

搞定了。谢谢。 - Chet Meinzer
这花了我一点时间才弄明白,但请确保在这些行下面导入您的Flask应用程序。 - frlzjosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接