Bazel, python: перенос тестов нарушает импорт в pip_requirement
Я пытаюсь перевести большой проект на использование Bazel и начинаю с малого. Я нашел небольшую оболочку в нашем проекте, и я пытаюсь сначала "базифицировать" ее.
Первоначальная структура пакета была примерно такой:
pydantic_utils
+- __init__.py
+- some_module.py
+- some_other_module.py
+- subdir
+- one.py
+- tests
+- __init__.py
+- test_some_module.py
Я добавил файлы в эту структуру и все заработало нормально, мои тесты запустились и прошли. Но потом я подумал, что поместил бы тесты в корневой каталог нашей библиотеки-оболочки. Поэтому я переместилtest_some_module
на один уровень выше, переместилpy_test
ориентироваться наBUILD.bazel
файл в корневом каталоге, изменилsrcs
обеих целей, чтобы не включать файлы другой цели:
load("@rules_python//python:defs.bzl", "py_library", "py_test")
load("@my_pip_install//:requirements.bzl", "requirement")
py_library(
name = "pydantic_utils",
srcs = glob(
["*.py"],
exclude = ["test_*.py"],
),
visibility = ["//visibility:public"],
deps = [
"//pydantic_utils/subdir",
requirement("pydantic"),
],
)
py_test(
name = "test_pydantic_utils_dp",
srcs = glob([
"test_*.py",
]),
main = "test_some_module.py",
deps = [
"//pydantic_utils",
requirement("pytest"),
],
)
Но теперь я получаю сообщение об ошибке, чтоpydantic
по какой-то причине не может импортировать TYPE_CHECKING.
...pydantic_utils/test_some_module.py", line 2, in <module>
from typing import Any
...
File "pydantic/__init__.py", line 2, in init pydantic.__init__
from .models import (
File "pydantic/dataclasses.py", line 1, in init pydantic.dataclasses
import re
ImportError: cannot import name TYPE_CHECKING
Это очень расплывчатый вопрос, но я понятия не имею, как начать его диагностировать. Может кто-нибудь мне помочь?
1 ответ
Пожалуйста, обновите ваш Python до последней версии, если вы используете старую. Он имеет поддержку до 3.10 и выше. Это общий журнал ошибок из реализации Python. Обратитесь, если вы все еще видите ошибку после обновления.