我在使用Python从相对路径导入模块时遇到问题。我尝试了我在网上找到的所有内容。这是我的目录结构:
starcipher/
__init__.py
caesar.py
tests/
__init__.py
test_caesar.py
正如您所知,tests/
目录包含我的所有单元测试。 test_caesar.py
使用caesar.py
中定义的类。这是我的文件:
caesar.py
:
class Caesar:
# Blabla
tests/test_caesar.py
:
import unittest
from ..caesar import Caesar
# I also tried:
from caesar import Caesar
from starcipher.caesar import Caesar
from . import Caesar
from .. import Caesar
# Nothing works.
class TestCaesar(unittest.TestCase):
# Blabla
我每次都有这个错误:
Traceback (most recent call last):
File "test_caesar.py", line 2, in <module>
from ..caesar import Caesar
SystemError: Parent module '' not loaded, cannot perform relative import
修改
以下是我运行单元测试的方法:
python -m unittest discover tests/
tests/
目录中:python test_caesar.py
python -m unittest
解
感谢Pocin,从__init__.py
目录中删除tests/
文件解决了这个问题!
谢谢。
答案 0 :(得分:0)
正好让解决方案清晰可见,修复方法是删除tests/__init__.py
文件。
但是我不确定为什么会这样有效,如果有人能提供解释会很棒。