Здравствуйте, в коде __ini__.py (Python3.8) есть ошибка при определении версии ядра.
Я нашел решение, но подробно описываю проблему здесь, чтобы помочь другим пользователям.
# 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'
Чтобы исправить эту ошибку, вот решение:
python
kernel_version = tuple(int(v[0:2]) for v in kernel_version)
int (v [0: 2] )
обрезает строку, чтобы правильно восстановить INT.
Привет,
У меня такая же проблема с ядром, поставляемым с OVH.
Я вижу, вы делаете запрос на перенос. Благодаря !
Хммм, моя ошибка, почему я не использовал здесь свободную версию?
О, ищу еще раз (извините, что сегодня немного больше не хватает), это странная строка версии, которая отбрасывает микрорелиз. Но похоже, что LooseVersion
действительно справляется с этим правильно, поэтому я думаю, что мы можем просто использовать это здесь. Хотя я предполагаю, что импорт distutils может быть медленным, поэтому, возможно, просто добавьте try:/except:
это не очень важно для начала.
Я не смог найти запрос на перенос ,
@ anirudh2290 Не могли бы вы устроить пиар? Кажется, есть два исправления, одно из которых приведено в отчете, и @seberg использует LooseVersion
.