У меня возникла проблема с импортом модулей из относительного пути с помощью 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
EDIT
Вот как я бегу мой модульного тестирования:
- В корневом каталоге:
python -m unittest discover tests/
- Или в
tests/
каталоге:python test_caesar.py
- Или даже:
python -m unittest
РЕШЕНИЕ
Благодаря Pocin, удаляя __init__.py
файл из каталога tests/
решил проблему!
спасибо.
Вам нужно точно указать, как вы используете этот тестовый файл. –
Вчера я боролся с тем же самым (только с py.test). В моем случае удаление '__init __. Py' из теста/каталога исправил его для меня –
@Pocin Да! Удаление '__init __. Py' из' tests/'работал! Спасибо :) – Mathieu