使用单元测试导入错误:来自本地库的“没有名为...的模块”

时间:2017-11-13 23:19:55

标签: python

我是Python(JS开发人员)的新手,我正在尝试运行测试套件。我的项目文件夹结构是这样的:

project/
  __init__.py
  libs/
    __init__.py
    s3panda.py 
  tests
    __init__.py
    tests_s3panda.py

在终端中,我正在运行python tests_s3panda.py

我不明白它是如何找不到本地模块的:

  

Traceback(最近一次调用最后一次):文件“tests_s3panda.py”,第7行,   在       来自libs.s3panda import S3Panda ImportError:没有名为libs.s3panda的模块

tests_s3panda.py代码段

from __future__ import absolute_import

import unittest

import pandas as pd

from libs.s3panda import S3Panda


class TestS3Panda(unittest.TestCase):
    ...

为相对路径做from ..libs.s3panda import S3Panda,我得到:

  

ValueError:在非包中尝试相对导入

1 个答案:

答案 0 :(得分:0)

我认为顶级文件夹中没有init.py的事实意味着Python不知道libstests都是同一模块project的一部分1}}。

尝试将__init__.py添加到project文件夹,然后将导入语句写为from project.libs.s3panda import S3Panda。通常,您希望指定绝对导入而不是相对导入(When to use absolute imports)。