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