bazel-contrib / bazel-contrib/rules_python

Bazel 7 namespace collision

未关闭
#1,897 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Starlark
星标
688
派生
721
平均合并
15 小时 7 分钟
30 天内合并 PR
76

描述

# 🐞 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

贡献指南

打开贡献指南

调研方向

首先,使用报告中的 Bazel 测试命令和版本,通过 example/time/BUILD、example/time/__init__.py 和 example/time/py_test.py 重现该失败。跟踪 Python 测试的打包和导入方式,然后验证 time 命名空间冲突相关的行为,并确认最小复现不再引发报告的 ModuleNotFoundError。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
build-system
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
需要澄清
新手友好度
30/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。