Один и тот же оператор импорта from mypackage._aux import is_error
имеет два разных значения в похожих файлах:
Первое - это ожидаемое поведение, потому что _aux/__init__.py
содержит from .is_error._is_error import is_error
. (формат from .folder.file import function
)
Когда я запускаю pytest
, два теста в _abbrev_testing_test.py
терпят неудачу, потому что is_error
не является ожидаемой функцией. (TypeError: 'module' object is not callable
)
Это работает, когда я использую строку, которую я хотел бы сократить с помощью новой функции: Это включает тест в _foobar_test.py
- поэтому в _foobar.py
была импортирована функция .
Но в _abbrev_testing.py
был импортирован модуль :
Кто-нибудь понимает разницу между двумя файлами? Должен ли я сделать это по-другому?
Я хотел бы знать, есть ли какое-нибудь логическое правило, которое позволило бы этого избежать. (Для меня это выглядит абсурдно и ошибочно c.)
Изменить: В обоих файлах это работает, когда я использую длинный оператор импорта, не полагающийся на _aux/__init__.py
:
Этот вопрос можно резюмировать следующим образом:
Что в _abbrev_testing.py
саботирует __init__.py
?
Редактировать 2: Шаги для воспроизведения:
me@ubuntu:~$ git clone https://github.com/watchduck/module_object_is_not_callable.git
me@ubuntu:~$ cd module_object_is_not_callable/
me@ubuntu:~/module_object_is_not_callable$ virtualenv -p python3 env
Открыть проект в IDE.
(env) me@ubuntu:~/module_object_is_not_callable$ pip install pytest
(env) me@ubuntu:~/module_object_is_not_callable$ pytest