Numpy: Numpy 1.10.2 + MKL = macet (Windows)

Dibuat pada 2 Jan 2016  ·  30Komentar  ·  Sumber: numpy/numpy

Baik menggunakan Anacondas Numpy atau yang dikemas di sini Numpy mengalami crash dengan beberapa fungsi. Pesan kesalahannya adalah
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.

dan

The procedure entry point mkl_aa_fw_get_max_memory could not be located in the dynamic link library C:\Program Files\Python 3.5\lib\site-packages\numpy\core\mkl_intel_thread.dll. .

Numpy 1.9.2 (diuji pada Python 3.3.5) berfungsi dengan baik (tetapi tidak memiliki .dll di atas dalam direktorinya juga).

Untuk saat ini saya telah menurunkan versi ke Numpy 1.9. Saya tahu Anda tidak menguji MKL tetapi mungkin Anda punya beberapa petunjuk?

Sistem Informasi

>>> platform.platform()
'Windows-10.0.10586'

>>> sys.version
'3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)]'

>>> np.__version__
'1.10.2'

>>> np.show_config()
blas_opt_info:
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
lapack_mkl_info:
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt', 'mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
lapack_opt_info:
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt', 'mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
blas_mkl_info:
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
mkl_info:
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
openblas_lapack_info:
  NOT AVAILABLE
00 - Bug build

Komentar yang paling membantu

@cgohlke Berikut adalah DLL yang ditemukan di direktori Windows saya:

['System32\\libiomp5md.dll',
 'System32\\mkl_core.dll',
 'System32\\mkl_def.dll',
 'System32\\mkl_intel_thread.dll',
 'SysWOW64\\libiomp5md.dll',
 'SysWOW64\\mkl_core.dll',
 'SysWOW64\\mkl_intel_thread.dll',
 'SysWOW64\\mkl_p4.dll',
 'SysWOW64\\mkl_p4m.dll',
 'SysWOW64\\mkl_p4m3.dll',
 'SysWOW64\\mkl_p4p.dll']

Mencoba mengatur ulang PATH saya dengan SET PATH=; sebelum memanggil python masih macet tetapi menghapus DLL di atas sepenuhnya dari direktori Windows menghentikan crash. Sepertinya masalah prioritas jalur @carlkl.

Semua 30 komentar

Hmm, tidak tahu apa yang terjadi di sini. Intel membuat beberapa perubahan pada build, tetapi saya rasa itu tidak terlibat. Python 3.5 adalah kemungkinan penyebabnya karena dikompilasi dengan VS yang lebih baru di windows. Pikiran @cgohlke ?

Menurut saya taruhan terbaik Anda adalah menyediakan reproduser (apa saja "beberapa fungsi" yang menghasilkan ini?), Dan berharap @cgohlke muncul dengan jawabannya atau mengajukan bug dengan Anaconda (karena mereka memiliki sumber daya untuk mendukung MKL mereka membangun dan kami tidak).

Maaf untuk "beberapa fungsi" :) - itu jatuh secara tidak langsung meskipun matplotlib.

Ini crash sama saja:

A = np.arange(2*3).reshape(2,3).astype(np.float32)
B = np.arange(2*3*2731).reshape(2,3,2731).astype(np.int16)

np.dot(A, B)

Saya melakukan pemeriksaan cepat dengan @cgohlke numpy (1.10.2) python-3.4 (64bit) dan juga python-3.5 (64bit) terbaru di laptop saya:

>>> np.show_config()
openblas_lapack_info:
  NOT AVAILABLE
lapack_mkl_info:
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt', 'mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
lapack_opt_info:
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt', 'mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
mkl_info:
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
blas_mkl_info:
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
blas_opt_info:
    include_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/include']
    libraries = ['mkl_lapack95_lp64', 'mkl_blas95_lp64', 'mkl_rt']
    library_dirs = ['C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl/lib/intel64_win']
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
>>> import numpy as np
>>> A = np.arange(2*3).reshape(2,3).astype(np.float32)
>>> B = np.arange(2*3*2731).reshape(2,3,2731).astype(np.int16)
>>> np.dot(A, B)
array([[[  13655.,   13658.,   13661., ...,   21839.,   21842.,   21845.],
        [  38234.,   38237.,   38240., ...,   46418.,   46421.,   46424.]],

       [[  38234.,   38246.,   38258., ...,   70970.,   70982.,   70994.],
        [ 136550.,  136562.,  136574., ...,  169286.,  169298.,  169310.]]], dtype=float32)

Keduanya bekerja seperti yang diharapkan untuk saya.

Saya kira kesalahan Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll dapat dijelaskan karena versi yang salah mkl_intel_thread.dll ditemukan di suatu tempat di PATH . Menemukan MKL DLL dengan memperluas PATH seperti yang dilakukan di numpy + MKL rapuh jika runtime MKL lain diinstal pada sistem.

Apakah ada file libiomp5md.dll atau mkl_*.dll di direktori C: \ Windows *?

@cgohlke , di numpy + MKL Anda memperkenalkan _init_numpy_mkl() untuk menambahkan numpy.core ke PATH .

Apakah Anda mempertimbangkan pendekatan berikut dari https://gist.github.com/matham/f6a07f8fb5e403feb440 untuk mengubah urutan pencarian DLL?

Lihat juga:
https://pytools.codeplex.com/workitem/1627 (dari mana asalnya)
https://github.com/numpy/numpy/wiki/windows-dll-notes#python -dlls
http://stackoverflow.com/questions/23804438/find-library-in-ctypes

@cgohlke Berikut adalah DLL yang ditemukan di direktori Windows saya:

['System32\\libiomp5md.dll',
 'System32\\mkl_core.dll',
 'System32\\mkl_def.dll',
 'System32\\mkl_intel_thread.dll',
 'SysWOW64\\libiomp5md.dll',
 'SysWOW64\\mkl_core.dll',
 'SysWOW64\\mkl_intel_thread.dll',
 'SysWOW64\\mkl_p4.dll',
 'SysWOW64\\mkl_p4m.dll',
 'SysWOW64\\mkl_p4m3.dll',
 'SysWOW64\\mkl_p4p.dll']

Mencoba mengatur ulang PATH saya dengan SET PATH=; sebelum memanggil python masih macet tetapi menghapus DLL di atas sepenuhnya dari direktori Windows menghentikan crash. Sepertinya masalah prioritas jalur @carlkl.

@cgohlke , saya mengusulkan perubahan berikut untuk diuji dengan numpy + MKL __init__.py

def _init_numpy_mkl():
    # Numpy+MKL on Windows only
    import os
    import ctypes
    if os.name != 'nt':
        return
    # disable Intel Fortran default console event handler
    env = 'FOR_DISABLE_CONSOLE_CTRL_HANDLER'
    if env not in os.environ:
        os.environ[env] = '1'
    # extend DLL search order with numpy.core
    # See https://github.com/numpy/numpy/wiki/windows-dll-notes#python-dlls
    # and https://pytools.codeplex.com/workitem/1627
    try:
        _AddDllDirectory = ctypes.windll.kernel32.AddDllDirectory
        _AddDllDirectory.argtypes = [ctypes.c_wchar_p]
        # Needed to initialize AddDllDirectory modifications
        ctypes.windll.kernel32.SetDefaultDllDirectories(0x1000)
    except AttributeError:
        _AddDllDirectory = ctypes.windll.kernel32.SetDllDirectoryW
        _AddDllDirectory.argtypes = [ctypes.c_wchar_p]
    try:
        _core = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'core')
        _AddDllDirectory(_core)
    except Exception:
        pass

_init_numpy_mkl()
del _init_numpy_mkl

menghapus DLL di atas sepenuhnya dari direktori Windows akan menghentikan crash.

Pembebasan yang bagus.

Saya mengusulkan perubahan berikut untuk menguji dengan numpy + MKL __init__.py

Itu tidak akan benar-benar berfungsi pada sistem yang lebih lama dan yang lebih penting itu merusak paket yang bergantung pada urutan pencarian DLL sistem. Mungkin dapat diterima untuk distribusi seperti Anaconda atau WinPython.

Saya merasa lucu bahwa saya awalnya menemukan metode AddDllDirectory di wiki numpy yang dikreditkan sebagian ke @carlkl , tetapi kemudian penggunaan saya diusulkan di sini oleh @carlkl sebagai contoh, dan saya berakhir di sini karena masalah dengan kode contoh tersebut saat menelusuri numpy untuk AddDllDirectory . Ini lingkaran penuh ...

Bagaimanapun, saya ingin mencatat bagi orang lain yang mempertimbangkan untuk menggunakan ini, bahwa baris ctypes.windll.kernel32.SetDefaultDllDirectories(0x1000) (dan tanda tidak nol lainnya) menyebabkan pengecualian ImportError: DLL load failed: The parameter is incorrect saat memuat beberapa dll. Bagi saya itu hanya terjadi secara khusus dengan ekstensi mingw-w64 (mingwpy) yang ditautkan ke dll ffmpeg yang dikompilasi silang pada debian dengan mingw-w64. Tapi saya tidak tahu apakah itu penyebabnya.

Namun, karena python memanggil LoadLibraryEx hanya dengan LOAD_WITH_ALTERED_SEARCH_PATH dan bukan dengan LOAD_LIBRARY_SEARCH_USER_DIRS , kecuali SetDefaultDllDirectories juga disebut dengan LOAD_LIBRARY_SEARCH_USER_DIRS , LoadLibraryEx tidak akan mencari direktori yang ditambahkan dengan AddDllDirectory . Bagi saya ini tampaknya agak rapuh untuk digunakan, jadi saya pikir saya akan beralih kembali ke menambahkan direktori dll ke path dengan os.environ . Saya bertanya-tanya apakah saya harus memperbarui wiki dengan info ini?

Bagaimanapun, semoga ini tidak terlalu jauh dari topik.

@matham , cuplikan kode ini harus dikreditkan ke _zooba_ - lihat https://pytools.codeplex.com/workitem/1627. Baris ctypes.windll.kernel32.SetDefaultDllDirectories(0x1000) tidak mengubah perilaku LoadLibraryEx dengan LOAD_WITH_ALTERED_SEARCH_PATH . Itu _hopefully_ mengubah perilaku LoadLibraryA (_without_ LOAD_WITH_ALTERED_SEARCH_PATH ) yang digunakan untuk memuat MKL_INTEL_THREAD.DLL tepat setelah acak \ mtrand.pyd dimuat dan MKL_RT.DLL lalu panggilan MKL_INTEL_THREAD.DLL :

log dari depency walker selama python -c "import numpy"

...
LoadLibraryExW("d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\random\mtrand.cp35-win_amd64.pyd", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) called from "d:\devel\py\python-3.5.0.amd64\PYTHON35.DLL" at address 0x00000000587E7747.
Loaded "d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\random\MTRAND.CP35-WIN_AMD64.PYD" at address 0x000007FEF3310000.  Successfully hooked module.
DllMain(0x000007FEF3310000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\random\MTRAND.CP35-WIN_AMD64.PYD" called.
DllMain(0x000007FEF3310000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\random\MTRAND.CP35-WIN_AMD64.PYD" returned 1 (0x1).
LoadLibraryExW("d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\random\mtrand.cp35-win_amd64.pyd", 0x0000000000000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned 0x000007FEF3310000.
LoadLibraryA("d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\core\mkl_intel_thread.dll") called from "d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\core\MKL_RT.DLL" at address 0x000007FEE17C4772.
Loaded "d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\core\MKL_INTEL_THREAD.DLL" at address 0x000007FEE0520000.  Successfully hooked module.
Loaded "d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\core\MKL_CORE.DLL" at address 0x000007FEDEEC0000.  Successfully hooked module.
Loaded "d:\devel\py\python-3.5.0.amd64\lib\site-packages\numpy\core\LIBIOMP5MD.DLL" at address 0x000007FEE43E0000.  Successfully hooked module.
...

@carlkl benar, tetapi saya merujuk ke wiki: (thanks to Steve Dower for the fragment, Carl Kleffner for finding it) , yang saya asumsikan adalah Anda :)

Kerapuhan yang saya maksud adalah bahwa secara umum mungkin ada beberapa kode lain yang dieksekusi antara panggilan SetDefaultDllDirectories yang menyetel bendera itu dan saat pustaka benar-benar dimuat. Misalnya jika Anda mengimpor sesuatu yang dengan sendirinya memanggil SetDefaultDllDirectories mungkin dengan nilai (misalnya 0) yang dapat mengakibatkan dll tidak ditemukan kemudian saat diimpor. Meskipun saya kira ini mungkin tidak menjadi masalah di sini jika segera diimpor.

@cgohlke , apakah ada yang salah dengan pramuat MKL_RT.DLL , MKL_INTEL_THREAD.DLL dan MKL_CORE.DLL dengan nama path eksplisit ke numpy.core dalam _init_numpy_mkl() ? Saya tidak yakin apakah secara bertahap memuat DLL MKL lain yang diperlukan berfungsi kemudian.

@bayu_joo

potongan berikut memastikan (?) bahwa MKL DLL dimuat dari numpy.core dan bukan dari sistem windows atau folder Intel redist. Urutan memuat DLL penting. Setidaknya ini berfungsi untuk Windows 7 python-3.4 bit.

def _init_numpy_mkl():
    # Numpy+MKL on Windows only
    import os
    import ctypes
    if os.name != 'nt':
        return
    # disable Intel Fortran default console event handler
    env = 'FOR_DISABLE_CONSOLE_CTRL_HANDLER'
    if env not in os.environ:
        os.environ[env] = '1'
    # preload MKL DLLs from numpy.core
    try:
        _core = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'core')
        for _dll in ('mkl_rt', 'libiomp5md', 'mkl_core', 'mkl_intel_thread', 
                     'libmmd', 'libifcoremd', 'libimalloc'):
            ctypes.cdll.LoadLibrary(os.path.join(_core,_dll))
    except Exception:
        pass

_init_numpy_mkl()
del _init_numpy_mkl

Saya memiliki Masalah yang sama dan menelusurinya kembali ke menginstal mkl_intel_thread.dll di C:\Windows\System32 seperti yang ditunjukkan oleh danielgeier.
Versi lama tidak memiliki mkl_aa_fw_get_max_memory antara lain.
Waktu pembuatan bertepatan dengan penginstalan driver audio Asio4all. Setelah saya mencopotnya, yang menghapus beberapa dll, itu berfungsi lagi (lebih baik daripada hanya menghapus dll di system32 sendiri).
Saya bermain-main dengan memutar mundur dan memperbarui distribusi anaconda tetapi tidak berhasil. Saya juga tidak bisa menonaktifkan mkl dengan anaconda di windows.

@ sebastian-schmidt, dapatkah Anda mencoba, jika memuat secara eksplisit MKL DLL dari folder numpy / core berfungsi untuk Anda, bahkan dengan MKL DLL yang sudah terinstal di folder sistem Windows. Lihat di atas: https://github.com/numpy/numpy/issues/6923#issuecomment -169073613

@carlkl , di mana saya harus menambahkan potongannya?
Saya mencoba menambahkannya ke file yang saya gunakan sebagai tes: https://gist.github.com/sebastian-schmidt/9bb97354b481750209fd3dac1e748d31 dan tidak berhasil.
Jalur gabungan hanyalah subdirektori dari tempat saya memanggil file.
Apakah saya harus menambahkannya ke init dari modul Numpy?

Fungsi _init_numpy_mkl() adalah bagian dari roda @cgohlke numpy + mkl. Anda dapat menemukannya di file __init__.py . Ini bukan bagian dari sumber numpy resmi.

Ini adalah versi yang ditemukan di numpy-1.10.4+mkl-cp34-none-win32.whl

def _init_numpy_mkl():
    # Numpy+MKL on Windows only
    import os
    if os.name != 'nt':
        return
    # disable Intel Fortran default console event handler
    env = 'FOR_DISABLE_CONSOLE_CTRL_HANDLER'
    if env not in os.environ:
        os.environ[env] = '1'
    # prepend the path of the Intel runtime DLLs to os.environ['PATH']
    try:
        path = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'core')
        if path not in os.environ.get('PATH', ''):
            os.environ['PATH'] = os.pathsep.join((path, os.environ.get('PATH', '')))
    except Exception:
        pass

_init_numpy_mkl()
del _init_numpy_mkl

Fungsi ini menambahkan folder numpy/core ke lingkungan PATH . Namun, DLL yang ditemukan di folder sistem windows lebih disukai daripada DLL yang ditemukan di PATH. Selamat datang di neraka DLL.

Versi alternatif dari fungsi ini https://github.com/numpy/numpy/issues/6923#issuecomment -169073613 memuat MKL DLL dari numpy/core dalam urutan yang benar _tanpa_ mengubah lingkungan PATH . Semua nama DLL diberikan sebagai nama file eksplisit dengan nama jalur yang memenuhi syarat, jadi saya tidak mengharapkan masalah dengan membayangi DLL di folder sistem windows, tetapi saya belum menguji ini.

Namun, saya tidak peduli dengan numpy beku dalam potongan kode ini.

Saya mengubah _init_numpy_mkl() dalam distribusi Anaconda ke versi Anda dan kemudian berhasil (dengan dll yang tidak kompatibel di windows/system32 .

Senang mendengarnya!

Kode di _init_numpy_mkl () merupakan bagian dari distribusi numpy @cgohlke 's dan di bawah responibility nya.
@cgohlke : ada komentar di https://github.com/numpy/numpy/issues/6923#issuecomment -169073613?

@ sebastian-schmidt, dapatkah Anda menguji versinya menggunakan AddDllDirectory (atau SetDllDirectoryW sebagai fallback): lihat di atas: https://github.com/numpy/numpy/issues/6923#issuecomment -168490201

@carlkl , versi AddDllDirectory / SetDllDirectoryW juga berfungsi.
Tes selalu hanya contoh np.dot() oleh danielgeier.
Di samping catatan, perangkat lunak yang menginstal perpustakaan mkl adalah Amplitube dan bukan driver Asio4all.

Saya juga menelusuri kembali masalah ini ke Amplitube.

ketika saya mencoba: import matplotlib.pyplot as plt dengan kedua versi init saya mendapat kesalahan:

---> 60 import matplotlib._png as _png
     61 ####################
     62 

ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.

Jadi saya beralih kembali ke versi asli Anaconda dan membiarkan Amplitube tidak diinstal.

@ sebastian-schmidt, setidaknya ini berhasil untuk saya. Mengimpor numpy, scipy, matplotlib._png berfungsi tanpa masalah di kotak saya.

Namun, menghapus instalan MKL DLL dari folder sistem windows tampaknya merupakan solusi terbaik untuk masalah semacam ini.

Saatnya menutup masalah ini?

Hai kawan. Untuk berjaga-jaga jika seseorang masih dengan masalah ini. Saya memiliki 1,12 + mkl numpy dan memiliki masalah yang sama. Saya mencopot pemasangan Amplitube 3 dan sekarang semuanya berfungsi!

Hai kawan,

Saya baru saja menginstal paket numpy + mkl 1.13 terbaru dari sini oleh @cgohlke .

Saya menjalankan Anaconda dengan Python 3.6.1 64-bit di Windows 7.

Setelah itu saya mendapatkan masalah DLL ini juga, itu berfungsi dengan baik untuk v1.12 dari situs yang sama sebelumnya.

Sebagai tambahan, sebenarnya semua kode berfungsi di notebook Jupyter .... Ini hanya terjadi di konsol.

@carlkl Saya mencari di folder Anaconda saya untuk _init_numpy_mkl tetapi tidak dapat menemukan file yang berisi string ini. Menambahkan numpy/core secara manual ke variabel PATH env saya juga tidak berfungsi.

Ada saran lain?

Terima kasih.

ketika saya mengimpor skimage, saya menemui masalah "tidak dapat memuat mkl_intel_thread.dll".
Saya tidak dapat menemukan mkl_intel_thread.dll di windows / system32, jadi saya menghapus libiomp5md.dll di folder itu seperti yang disebutkan @cgohlke , itu berfungsi! terima kasih banyak! masalah itu mengganggu saya selama berminggu-minggu. Bagaimanapun, saya berharap orang lain yang menemui masalah ini bisa mendapatkan bantuan dari ini. Cobalah untuk mencari libiomp5md.dll, ini dapat membantu.

Saya ingin tahu apakah https://github.com/numpy/numpy/issues/6923#issuecomment -169073613 berfungsi dalam kasus itu tanpa perlu menghapus MKL DLL dari windows / system32. Cuplikan ini menunjukkan, bahwa dimungkinkan untuk memuat tujuh (tetapi tidak semua) MKL DLL di folder numpy / core tanpa perlu meneruskan lib ekstra ke variabel lingkungan PATH atau menggunakan trik lain. Penting untuk memuat 7 DLL ini dalam urutan yang benar. Semua DLL MKL lain yang diperlukan kemudian secara otomatis dimuat dari numpy / core alih-alih folder windows / system32.

Masih belum jelas apakah ini berhasil di semua skenario yang mungkin. Misalnya aplikasi python beku. Juga versi OS Windows mungkin berbeda dalam perilaku pemuatan DLL.

Tampaknya menguntungkan bagi saya untuk menyelidiki lebih lanjut varian ini.

Kami bolak-balik dengan SetDefaultDllDirectories , # 10229 menambahkannya lalu # 11493 menghapusnya. Saya pikir kami telah melangkah sejauh yang kami bisa dengan ini. Tampaknya pilihan terbaik adalah menghapus salinan mkl lainnya dari PATH.

Harap buka kembali jika Anda tidak setuju.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat