无法从Pytest中的模块导入子模块-模块没有属性

时间:2019-01-22 11:49:29

标签: python docker flask pytest attributeerror

当我尝试在Docker容器中运行PYTHONPATH=${DIR}/src:${DIR}/test pytest -vvv test/unittests时出现以下错误(当我尝试在自己的计算机上运行它时,它会起作用):

ImportError while loading conftest '/.../test/conftest.py'.
test/conftest.py:3: in <module>
    from flask_app import create_api
src/flask_app/__init__.py:4: in <module>
    api = create_api(app)
src/flask_app/app.py:22: in create_api
    from . data.views import master_data
src/flask_app/data/views.py:3: in <module>
    from common.my_module import my_func
src/common/my_module/__init__.py:1: in <module>
    from common.my_module.bar_module import my_func  # NOQA
src/common/my_module/bar_module.py:5: in <module>
    import common.my_module.errors as err
E   AttributeError: module 'common' has no attribute 'my_module'

我的回购结构是

src/
        common/
                   my_module/
                                 __init__.py
                                 errors.py                                     
                                 bar_module.py
                   foo_module.py
test/
        unittests/
                   __init__.py 
                   test_bar_module.py
        conftest.py
        pytest.ini

help(common)

>>> import common
>>> help(common)
Help on package common:

NAME
    common

PACKAGE CONTENTS
    my_module (package)
    foo_module

FILE
    /.../src/common/__init__.py

sys.path

>>> import sys
>>> sys.path
['', '/.../src', '/.../test', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']

我可以从普通导入foo_module.py而不会出现错误。 因此它可以使用foo_module.py但不能使用my_module/bar_module.py

0 个答案:

没有答案