Numpy: BUG: kernel_version non-numerik pada platform OVH

Dibuat pada 24 Jun 2020  ·  5Komentar  ·  Sumber: numpy/numpy

Halo, ada kesalahan dalam kode __ini__.py (Python3.8), saat mendeteksi versi Kernel.
Saya menemukan solusinya tetapi saya merinci masalah di sini untuk membantu pengguna lain.

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

Pesan eror:

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

Informasi versi Numpy / Python:

Untuk memperbaiki kesalahan ini, berikut solusinya:

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

int (v [0: 2] ) memotong string untuk memulihkan INT dengan benar.

00 - Bug high

Semua 5 komentar

Hai,

Saya mengalami masalah yang sama dengan kernel yang dikirimkan dengan OVH.
Saya melihat Anda membuat permintaan tarik. Terima kasih!

Hmmm, kesalahan saya, mengapa saya tidak menggunakan versi longgar di sini?

Oh, melihat lagi (maaf melewatkan beberapa hal lagi hari ini), itu adalah string versi yang aneh, menjatuhkan rilis mikro. Tapi, tampaknya LooseVersion menangani dengan benar, jadi saya pikir kita bisa menggunakannya di sini. Meskipun saya kira mengimpor distutils mungkin lambat, jadi mungkin tambahkan saja try:/except: itu tidak terlalu penting untuk memulai.

Saya tidak dapat menemukan permintaan tarik, @ nejib1 apakah Anda sedang mengerjakannya.

@ anirudh2290 Tidak ada PR, bisakah Anda membuatnya? Tampaknya ada dua perbaikan, satu diberikan dalam laporan dan @seberg penggunaan LooseVersion .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat