Hallo, es gibt einen Fehler im Code von __ini__.py (Python3.8), wenn die Version des Kernels erkannt wird.
Ich habe die Lösung gefunden, aber ich beschreibe das Problem hier, um anderen Benutzern zu helfen.
# 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)
# 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'
Um diesen Fehler zu beheben, ist hier die Lösung:
python
kernel_version = tuple(int(v[0:2]) for v in kernel_version)
Die int (v [0: 2] )
kürzen die Zeichenfolge, um die INT korrekt wiederherzustellen.
Hallo,
Ich habe das gleiche Problem mit dem mit OVH gelieferten Kernel.
Ich sehe, dass Sie die Pull-Anfrage stellen. Vielen Dank !
Hmmm, mein Fehler, warum habe ich hier keine Looseversion verwendet?
Oh, wenn ich noch einmal hinschaue (es tut mir leid, dass ich heute ein bisschen mehr Dinge vermisse), das ist eine seltsame Versionszeichenfolge, die die Mikroveröffentlichung fallen lässt. Aber es scheint, dass LooseVersion
richtig damit umgeht, also denke ich, dass wir das hier einfach verwenden können. Obwohl ich denke, dass das Importieren von Distutils langsam sein kann, fügen Sie vielleicht einfach ein try:/except:
nicht sehr wichtig.
Ich konnte die Pull-Anfrage nicht finden, @ nejib1 arbeitest du gerade daran
@ anirudh2290 Es gibt keine PR, könntest du eine machen? Es scheint zwei Korrekturen zu geben, eine im Bericht und die Verwendung von LooseVersion
@seberg .