我有以下目录结构:
/testlib
__init__.py
ec2.py
unit/
__init__.py
test_ec2.py
utils/
__init__.py
我正在尝试为unittest
创建ec2.py
课程:
import ec2
class TestEC2(unittest.TestCase):
def setUp(self):
self.ec2obj = ec2.EC2(name="testlib_unittest")
if __name__ == '__main__':
unittest.main()
但是,当我执行test_ec2.py
时,我收到以下错误:
python unit/test_ec2.py
Traceback (most recent call last):
File "unit/test_ec2.py", line 4, in <module>
import ec2
ImportError: No module named ec2
我仍然不明白我为什么会这样做,因为我在目录中正确设置了__init__.py
。 __init__.py
文件完全为空:我已使用touch __init__.py
创建了这些文件。有线索吗?
****更新**** 以下是一些建议:
/testlib# python unit/test_ec2.py
Traceback (most recent call last):
File "unit/test_ec2.py", line 4, in <module>
from ..ec2 import EC2
ValueError: Attempted relative import in non-package
testlib# python unit/test_ec2.py
Traceback (most recent call last):
File "unit/test_ec2.py", line 4, in <module>
import testlib.ec2 as ec2
ImportError: No module named testlib.ec2
答案 0 :(得分:2)
由于您未正确运行脚本,因此无法找到该模块。在testlib/
中运行以下内容:
python -m unit.test_ec2
答案 1 :(得分:0)
Python不会在您上面的目录中查找文件。 Ignacio的回答是正确的,请参阅this进行详细说明。