bazel-contrib / bazel-contrib/rules_python

Bazel 7 namespace collision

Đang mở
#1,897 4 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Starlark
Star
688
Fork
721
Merge trung bình
15 giờ 7 phút
Pull request đã merge (30 ngày)
76

Mô tả

# 🐞 bug report

with rules_python 0.31.0 and bazel 7.1.2, there seems to be an issue with naming certain directories with certain names. Wondering if this is expected?

### Description

There is a namespace collision with certain directories

## 🔬 Minimal Reproduction

Build file
example/time/BUILD
```
load("@rules_python//python:defs.bzl", "py_test", "py_library")

py_library(
name = "time_py",
srcs = ["py_test.py"],
)

py_test(
main = "py_test.py",
srcs = [":time_py"],
)
```

`example/time/__init__.py`
```
import time
```

`example/time/py_test.py`
```
import time
```

bazel test //example/time:all --noincompatible_default_to_explicit_init_py will result in an import error

## 🔥 Exception or Error



```
ImportError while importing test module
Hint: make sure your test modules/packages have valid Python names.
Traceback:
../pip_pytest/site-packages/_pytest/python.py:617: in _importtestmodule
mod = import_path(self.path, mode=importmode, root=self.config.rootpath)
../pip_pytest/site-packages/_pytest/pathlib.py:564: in import_path
importlib.import_module(module_name)
/home/ryang/.cache/bazel/_bazel_ryang/7071f3e24af240fa9a28f67dc16192b3/execroot/waabi-av/external/python3/lib/python310.zip/importlib/__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
:1050: in _gcd_import
???
:1027: in _find_and_load
???
:1001: in _find_and_load_unlocked
???
E ModuleNotFoundError: No module named 'time.py_test'; 'time' is not a package
```

## 🌍 Your Environment

**Operating System:**

ubuntu 20.04

**Output of `bazel version`:**

7.1.2
**Rules_python version:**

0.31.0

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện lỗi với example/time/BUILD, example/time/__init__.py và example/time/py_test.py bằng lệnh kiểm thử Bazel và các phiên bản đã báo cáo. Theo dõi cách kiểm thử Python được đóng gói và import, sau đó xác minh hành vi liên quan đến xung đột namespace time và xác nhận rằng bản tái hiện tối thiểu không còn phát sinh ModuleNotFoundError đã báo cáo.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
build-system
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.