bazel-contrib / bazel-contrib/rules_python

Use pip repos with different names between different python versions

Abierto
#2,530 9 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Starlark
Estrellas
688
Forks
721
Merge medio
15 h 7 min
PR fusionados (30 d)
76

Descripción

# 🐞 bug report

### Affected Rule

This seems to be an "issue" when you using py_library and add a dependency to it that is in a pip repo not using your default python version. Hopefully I explained that correctly but I also opened a PR to make it easy to reproduce https://github.com/bazelbuild/rules_python/pull/2529.

### Is this a regression?

I don't think so I have another version of rules python in use 0.32.2 I believe and it has the same issue.

### Description

https://github.com/bazelbuild/rules_python/pull/2529 described better here but when using multiple repos and python versions and trying to use the library that contains a requirement from the non default and building it things blow up and look like this.

```
ERROR: /private/var/tmp/_bazel_schuettm/e053d0eaf0a843e9f76bdb61766af4b7/external/rules_python++pip+pypi_3_10_only/flask/BUILD.bazel:5:12: configurable attribute "actual" in @@rules_python++pip+pypi_3_10_only//flask:pkg doesn't match this configuration: No matching wheel for current configuration's Python version.

The current build configuration's Python version doesn't match any of the Python
wheels available for this distribution. This distribution supports the following Python
configuration settings:
//_config:is_python_3.11

To determine the current configuration's Python version, run:
`bazel config ` (shown further below)

and look for one of:
@@rules_python+//python/config_settings:python_version
@@rules_python+//python/config_settings:pip_whl
@@rules_python+//python/config_settings:pip_whl_glibc_version
@@rules_python+//python/config_settings:pip_whl_muslc_version
@@rules_python+//python/config_settings:pip_whl_osx_arch
@@rules_python+//python/config_settings:pip_whl_osx_version
@@rules_python+//python/config_settings:py_freethreaded
@@rules_python+//python/config_settings:py_linux_libc

If the value is missing, then the default value is being used, see documentation:
https://rules-python.readthedocs.io/en/latest/api/rules_python/python/config_settings

This instance of @@rules_python++pip+pypi_3_10_only//flask:pkg has configuration identifier e62ee83. To inspect its configuration, run: bazel config e62ee83.

For more help, see https://bazel.build/docs/configurable-attributes#faq-select-choose-condition.

Use --verbose_failures to see the command lines of failed build steps.
ERROR: Analysis of target '//tests:my_lib_3_10_only_test' failed; build aborted: Analysis failed
INFO: Elapsed time: 0.197s, Critical Path: 0.02s
INFO: 2 processes: 2 internal.
ERROR: Build did NOT complete successfully
//tests:test_versions NO STATUS

Executed 0 out of 1 test: 1 was skipped.
```

## 🔬 Minimal Reproduction

https://github.com/bazelbuild/rules_python/pull/2529 and just run `bezel test //...` inside `examples/multi_python_versions`.

## 🔥 Exception or Error

See above

## 🌍 Your Environment

**Operating System:**

This is on a Mac but I believe it is independent of OS.

**Output of `bazel version`:**

I have hit this on 7.x and 8..x

**Rules_python version:**

0.32.0 -> main

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza con la reproducción en PR #2529 y el directorio examples/multi_python_versions; ejecuta el comando de prueba indicado para observar el fallo en los repositorios pip de versiones de Python con nombres diferentes. Rastrea la configuración seleccionada para el repositorio no predeterminado y verifica que la reproducción pasa cuando su dependencia se utiliza desde py_library.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
build-system
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.