猿问

从python中的不同目录导入错误(Err - No module named app)

我经历了无数的答案,也尝试了其中的大部分,但仍然面临同样的问题


我的结构


 -- backend

    -- app

       -- __init__.py

       -- utils.py

       -- models.py

    -- pytest

       -- test_utils.py`

现在我想将 utils 导入 test_utils 以便能够调用该函数并对其进行测试。我的init .py 不为空,我的 test_utils.py 看起来像这样


import sys, os.path

sys.path.insert(0 ,(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) + '/app/'))

from utils import test_function


def test_test_function():

  a = test_function(5)

  assert a == 5

我检查了我的 sys 路径也指向正确的目录,但不断收到此错误,我在 Linux 中使用 Python 2.7


ImportError while importing test module '/home/richie/Documents/Project/backend/pytest/test_utils.py'.

Hint: make sure your test modules/packages have valid Python names.

Traceback:

../virenv/local/lib/python2.7/site-packages/six.py:709: in exec_

    exec("""exec _code_ in _globs_, _locs_""") 

test_utils.py:3: in <module>

    from utils import test_function

../app/utils.py:15: in <module>

    from models import Users, Accounts

../app/models.py:2: in <module>

    from app import db

E   ImportError: No module named app


梵蒂冈之花
浏览 346回答 2
2回答

慕的地8271018

解决方案是在 pytest/ 文件夹中创建一个 pytest.ini 文件。pytest.ini 的内容将是:--[测试]python_paths = .&nbsp;../应用程序

繁星淼淼

事实证明,必须为 app 和 utils 添加路径,然后它才能工作sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),&nbsp;'..'))) sys.path.append((os.path.abspath(os.path.join(os.path.dirname(__file__),&nbsp;'..'))&nbsp;+&nbsp;'/app/'))
随时随地看视频慕课网APP

相关分类

Python
我要回答