Numpy: BUG: version non numérique du noyau sur la plateforme OVH

Créé le 24 juin 2020  ·  5Commentaires  ·  Source: numpy/numpy

Bonjour, il y a une erreur dans le code de __ini__.py (Python3.8), lors de la détection de la version du noyau.
J'ai trouvé la solution mais je détaille le problème ici pour aider les autres utilisateurs.

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

Message d'erreur:

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

Informations sur la version Numpy / Python:

Pour corriger cette erreur, voici la solution:

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

Le int (v [0: 2] ) tronque la chaîne pour récupérer correctement l'INT.

00 - Bug high

Tous les 5 commentaires

Salut,

J'ai le même problème avec le noyau livré avec OVH.
Je vois que vous faites la pull request. Merci !

Hmmm, mon erreur, pourquoi n'ai-je pas utilisé la version lâche ici?

Oh, en regardant à nouveau (désolé, il manque un peu plus de choses aujourd'hui), c'est une chaîne de version étrange, abandonnant la micro-version. Mais, il semble que LooseVersion gère correctement, donc je pense que nous pouvons simplement l'utiliser ici. Bien que je suppose que l'importation de distutils peut être lente, alors peut-être ajouter simplement un try:/except: ce n'est pas très important pour commencer.

Je n'ai pas pu trouver la pull request, @ nejib1 est- ce que vous travaillez dessus.

@ anirudh2290 Il n'y a pas de PR, pourriez-vous en faire un? Il semble y avoir deux correctifs, l'un donné dans le rapport et @seberg l' utilisation de LooseVersion .

Cette page vous a été utile?
0 / 5 - 0 notes