我是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:在非包中尝试相对导入
答案 0 :(得分:0)
我认为顶级文件夹中没有init.py
的事实意味着Python不知道libs
和tests
都是同一模块project
的一部分1}}。
尝试将__init__.py
添加到project
文件夹,然后将导入语句写为from project.libs.s3panda import S3Panda
。通常,您希望指定绝对导入而不是相对导入(When to use absolute imports)。