Numpy: ERROR: kernel_version no numérico en la plataforma OVH

Creado en 24 jun. 2020  ·  5Comentarios  ·  Fuente: numpy/numpy

Hola, hay un error en el código de __ini__.py (Python3.8), al detectar la versión del Kernel.
Encontré la solución pero aquí detallo el problema para ayudar a otros usuarios.

    # We usually use madvise hugepages support, but on some old kernels it
    # is slow and thus better avoided.
    # Specifically kernel version 4.6 had a bug fix which probably fixed this:
    # https://github.com/torvalds/linux/commit/7cf91a98e607c2f935dbcc177d70011e95b8faff
    import os
    use_hugepage = os.environ.get("NUMPY_MADVISE_HUGEPAGE", None)
    if sys.platform == "linux" and use_hugepage is None:
        use_hugepage = 1
        kernel_version = os.uname().release.split(".")[:2]
        kernel_version = tuple(int(v) for v in kernel_version)
        if kernel_version < (4, 6):
            use_hugepage = 0
    elif use_hugepage is None:
        # This is not Linux, so it should not matter, just enable anyway
        use_hugepage = 1
    else:
        use_hugepage = int(use_hugepage)

    # Note that this will currently only make a difference on Linux
    core.multiarray._set_madvise_hugepage(use_hugepage)

Mensaje de error:

# usr\local\lib\python3.8\site-packages\numpy\__init__.py

 #python3.8 test.py
['4', '19-ovh-xxxx-std-ipv6-64']
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    kernel_version = tuple(int(v) for v in kernel_version)
  File "test.py", line 4, in <genexpr>
    kernel_version = tuple(int(v) for v in kernel_version)
ValueError: invalid literal for int() with base 10: '19-ovh-xxxx-std-ipv6-64'

Información de la versión de Numpy / Python:

Para corregir este error, aquí está la solución:

python kernel_version = tuple(int(v[0:2]) for v in kernel_version)

Los int (v [0: 2] ) truncan la cadena para recuperar el INT correctamente.

00 - Bug high

Todos 5 comentarios

Hola,

Tengo el mismo problema con el kernel incluido en OVH.
Veo que estás haciendo la solicitud de extracción. Gracias !

Hmmm, mi error, ¿por qué no usé la versión suelta aquí?

Oh, mirando de nuevo (lo siento, faltan cosas un poco más hoy), esa es una cadena de versión extraña, dejando caer el micro-lanzamiento. Pero, parece que LooseVersion lo maneja correctamente, así que creo que podemos usarlo aquí. Aunque supongo que importar distutils puede ser lento, tal vez solo agregue un try:/except: no es muy importante para empezar.

No pude encontrar la solicitud de extracción, @ nejib1, ¿estás trabajando en ella?

@ anirudh2290 No hay relaciones públicas, ¿podrías crear una? Parece haber dos correcciones, una dada en el informe y el uso de @seberg de LooseVersion .

¿Fue útil esta página
0 / 5 - 0 calificaciones