Numpy: Numpy 1.10.2 + MKL = рдХреНрд░реИрд╢ (рд╡рд┐рдВрдбреЛрдЬ)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЬрдире░ 2016  ┬╖  30рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

рдЪрд╛рд╣реЗ рдПрдирд╛рдХреЛрдВрдбрд╛ рдиреЗрдореНрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реЛ рдпрд╛ рдпрд╣рд╛рдВ рдХрд╛ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдирдореНрдкреА рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИрдВ
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.

рддрдерд╛

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 (рдкрд╛рдпрдерди 3.3.5 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .dll рд╕реЗ рдКрдкрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рддреЛ)ред

рдЗрд╕ рд╕рдордп рдореИрдВ Numpy 1.9 рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рд╣реЛ рдЧрдпрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдордХреЗрдПрд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдВрдХреЗрдд рдорд┐рд▓реЗ рд╣реИрдВ?

рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рд╕реВрдЪрдирд╛

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

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ cgohlke рдпреЗ рдореЗрд░реА Windows рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд╛рдП рдЧрдП DLL рд╣реИрдВ:

['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']

рдЕрдЬрдЧрд░ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ SET PATH=; рд╕рд╛рде рдореЗрд░реЗ PATH рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЕрднреА рднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ DLL рд╕реЗ рдКрдкрд░ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдХреНрд░реИрд╢ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдкрде рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╕рдорд╕реНрдпрд╛ @carlkl рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рд╕рднреА 30 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рдореНрдо, рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрдВрдЯреЗрд▓ рдиреЗ рдмрд┐рд▓реНрдб рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкрд╛рдпрдерди 3.5 рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдкрд░рд╛рдзреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдкрд░ рдПрдХ рдирдП рд╡реАрдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред @cgohlke рд╡рд┐рдЪрд╛рд░?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджрд╛рдВрд╡ рдПрдХ рдкреНрд░рдЬрдирдирдХрд░реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ (рдпрд╣ "рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ" рдХреБрдЫ рдХрд╛рд░реНрдп рдХреНрдпрд╛ рд╣реИрдВ?), рдФрд░ рдпрд╛ рддреЛ рдЖрд╢рд╛ рд╣реИ рдХрд┐

"рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рдВрд╕" рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ :) - рдпрд╣ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдЯрд▓реЛрдкреНрд▓рд┐рдмред

рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрддрд╛ рд╣реИ:

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)

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рдирд╡реАрдирддрдо @cgohlke numpy (1.10.2) рдкрд╛рдпрдерди-3.4 (64 рдмрд┐рдЯ) рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдЬрдЧрд░-3.5 (64 рдмрд┐рдЯ) рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд╡рд░рд┐рдд рдЬрд╛рдВрдЪ рдХреА:

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

рджреЛрдиреЛрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рддреНрд░реБрдЯрд┐ рдЕрдиреБрдорд╛рди Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll рдПрдХ рдЧрд▓рдд рдХреА рд╡рдЬрд╣ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕рдВрд╕реНрдХрд░рдгреАрдХреГрдд mkl_intel_thread.dll рдкрд╛рдпрд╛ somwhere рдкрд░ PATH ред рдПрдордХреЗрдПрд▓ рдбреАрдПрд▓рдПрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ PATH рд░реВрдк рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ + рдПрдордХреЗрдПрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдФрд░ рдПрдордХреЗрдПрд▓ рд░рдирдЯрд╛рдЗрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпрд╣ рдирд╛рдЬреБрдХ рд╣реИред

рдХреНрдпрд╛ C: \ Windows * рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ libiomp5md.dll рдпрд╛ mkl_*.dll рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ?

@cgohlke , numpy + MKL рдореЗрдВ рдЖрдкрдиреЗ numpy.core рдХреЛ PATH рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП _init_numpy_mkl() рд╢реБрд░реБрдЖрдд рдХреАред

рдХреНрдпрд╛ рдЖрдкрдиреЗ DLL рдЦреЛрдЬ рдХреНрд░рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП https://gist.github.com/matham/f6a07f8fb5e403feb440 рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛?

рдпрд╣ рд╕рднреА рджреЗрдЦреЗрдВ:
https://pytools.codeplex.com/workitem/1627 (рдЬрд╣рд╛рдВ рд╕реЗ рдпрд╣ рдЖрддрд╛ рд╣реИ)
https://github.com/numpy/numpy/wiki/windows-dll-notes#python -dlls
http://stackoverflow.com/questions/23804438/find-library-in-ctypes

@ cgohlke рдпреЗ рдореЗрд░реА Windows рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд╛рдП рдЧрдП DLL рд╣реИрдВ:

['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']

рдЕрдЬрдЧрд░ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ SET PATH=; рд╕рд╛рде рдореЗрд░реЗ PATH рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЕрднреА рднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ DLL рд╕реЗ рдКрдкрд░ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдХреНрд░реИрд╢ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдкрде рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╕рдорд╕реНрдпрд╛ @carlkl рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

@cgohlke , рдореИрдВ 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

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ DLL рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдХреНрд░реИрд╢ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдЪреНрдЫрд╛ рдЫреБрдЯрдХрд╛рд░рд╛ред

рдореИрдВ рд╕реБрдиреНрди + MKL рдХреЗ __init__.py рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрджрд▓рд╛рд╡ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЗ DLL рд╕рд░реНрдЪ рдСрд░реНрдбрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдирд╛рдХреЛрдВрдбрд╛ рдпрд╛ WinPython рдЬреИрд╕реЗ рд╡рд┐рддрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ AddDllDirectory рдЦрддрдирд╛ рд╡рд┐рдХреА рдореЗрдВ рдкрд╛рдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ @carlkl рдХреЛ рд╢реНрд░реЗрдп рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдпрд╣рд╛рдБ @carlkl рдиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдореИрдВ рдпрд╣рд╛рдБ рдЗрд╕рд▓рд┐рдП рдЖрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ AddDllDirectory рд▓рд┐рдП рд╕реБрдиреНрди рдЦреЛрдЬрддреЗ рд╕рдордп рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ред рдпрд╣ рдкреВрд░реНрдг рдЪрдХреНрд░ рд╣реИ ...

рд╡реИрд╕реЗ рднреА, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдХрд┐ рд▓рд╛рдЗрди ctypes.windll.kernel32.SetDefaultDllDirectories(0x1000) (рдФрд░ рдХреЛрдИ рднреА рдирд╣реАрдВ-рд╢реВрдиреНрдп рдЭрдВрдбреЗ) рдХреБрдЫ dll рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп ImportError: DLL load failed: The parameter is incorrect рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ mingw-w64 (mingwpy) рдирд┐рд░реНрдорд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╣реБрдЖ, рдЬреЛ mfw-w64 рдХреЗ рд╕рд╛рде рдбреЗрдмрд┐рдпрди рдкрд░ рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЧрдП ffmpeg dll рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдерд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЬрдЧрд░ LoadLibraryEx рдХреЗрд╡рд▓ LOAD_WITH_ALTERED_SEARCH_PATH рд╕рд╛рде рдФрд░ LOAD_LIBRARY_SEARCH_USER_DIRS , рдЬрдм рддрдХ рдХрд┐ SetDefaultDllDirectories рдХреЛ рднреА LOAD_LIBRARY_SEARCH_USER_DIRS , LoadLibraryEx рд╕рд╛рде рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред AddDllDirectory рд╕рд╛рде рдЬреЛрдбрд╝реА рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ os.environ рд╕рд╛рде dll рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╡рд┐рдХреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐?

рд╡реИрд╕реЗ рднреА, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рджреВрд░ рдХрд╛ рд╡рд┐рд╖рдп рдирд╣реАрдВ рдерд╛ред

@matham , рдЗрд╕ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ _zooba_ рдХреЛ рдХреНрд░реЗрдбрд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - https://pytools.codeplex.com/workitem/1627 рджреЗрдЦреЗрдВред рд▓рд╛рдЗрди ctypes.windll.kernel32.SetDefaultDllDirectories(0x1000) LoadLibraryEx рд╕рд╛рде LOAD_WITH_ALTERED_SEARCH_PATH LoadLibraryEx рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИред рдпрд╣ _hopefully_ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ LoadLibraryA (_without_ LOAD_WITH_ALTERED_SEARCH_PATH ) рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ MKL_INTEL_THREAD.DLL рдХреЛ рд░реИрдВрдбрдо \ mtrand.pyd рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд▓реЛрдб рдХрд░рддрд╛ рдерд╛ рдФрд░ MKL_RT.DLL рддрдм рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ MKL_INTEL_THREAD.DLL рдХреЙрд▓:

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 рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рдХрд┐ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛: (thanks to Steve Dower for the fragment, Carl Kleffner for finding it) , рдЬреЛ рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдЖрдк :)

рдореИрдВ рдЬрд┐рд╕ рдирд╛рдЬреБрдХрддрд╛ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ SetDefaultDllDirectories рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдХреБрдЫ рдЕрдиреНрдп рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рдзреНрд╡рдЬ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрд╡рдпрдВ SetDefaultDllDirectories рд╢рд╛рдпрдж рдПрдХ рдореВрд▓реНрдп (рдЙрджрд╛рд╣рд░рдг 0) рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдмрд╛рдж рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдБ рдПрдХ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рддреБрд░рдВрдд рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@cgohlke , рдХреНрдпрд╛ MKL_RT.DLL , MKL_INTEL_THREAD.DLL рдФрд░ MKL_CORE.DLL numpy.core рднреАрддрд░ _init_numpy_mkl() numpy.core рдкреНрд░реАрд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХ MKL DLL рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред

@cgohlke ,

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдирд┐рдкреЗрдЯ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ (?) рдХрд┐ MKL DLL рдХреЛ numpy.core рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдЗрдВрдЯреЗрд▓ рд░рд┐рдбрд┐рд╕реНрдЯ рдлреЛрд▓реНрдбрд░ рд╕реЗ рдирд╣реАрдВред DLL рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреНрд░рдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ 7 рдкрд╛рдпрдерди-3.4 рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдЗрд╕реЗ рдбреИрдирд┐рдпрд▓рдЬрд┐рдпрд░ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд mkl_intel_thread.dll C:\Windows\System32 рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ред
рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдмреАрдЪ mkl_aa_fw_get_max_memory рдереЗред
рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдордп Asio4all рдСрдбрд┐рдпреЛ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрдИ dll рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рддреЛ рдЗрд╕рдиреЗ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ (рдЕрдкрдиреЗ рджрдо рдкрд░ system32 рдореЗрдВ dlls рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░)ред
рдореИрдВ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдиреЗ рдФрд░ рдПрдирд╛рдХреЛрдВрдбрд╛ рд╡рд┐рддрд░рдг рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддрд╛ рд░рд╣рд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдкрд░ рдПрдирд╛рдХреЛрдВрдбрд╛ рдХреЗ рд╕рд╛рде mkl рдХреЛ рднреА рдирд┐рд╖реНрдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред

@ sebastian-schmidt, рдпрджрд┐ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рд╕рд┐рд╕реНрдЯрдо рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдкреБрд░рд╛рдиреЗ MKL DLL рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ / рдЦреВрдВрдЯреА рдлреЛрд▓реНрдбрд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ MKL DLL рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдКрдкрд░ рджреЗрдЦреЗрдВ: https://github.com/numpy/numpy/issues/6923#issuecomment -16717713

@ рдСрд░реНрдХрд▓ , рдореБрдЭреЗ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╣рд╛рдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ?
рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА: https://gist.github.com/sebastian-schmidt/9bb97354b481750209fd3dac1e748d31 рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рд╢рд╛рдорд┐рд▓ рдкрде рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИред
рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕реЗ Numpy рдореЙрдбреНрдпреВрд▓ рдХреА init рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ?

рд╕рдорд╛рд░реЛрд╣ _init_numpy_mkl() @cgohlke рд╕реБрдиреНрди + mkl рдкрд╣рд┐рдпреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ __init__.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реБрдкреАрд░реА рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдБ 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

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди numpy/core PATH рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ numpy/core рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ DLL PATH рдореЗрдВ рдкрд╛рдП рдЧрдП DLL рдХреЗ рдкрдХреНрд╖рдзрд░ рд╣реИрдВред DLL рдирд░рдХ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг https://github.com/numpy/numpy/issues/6923#issuecomment -169073613 MKL DLL рдХреЛ numpy/core рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ _woutout_ рд╕реЗ PATH рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рднреА DLL рдХреЗ рдирд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рдкрдердирд╛рдо рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ DLL рдХреЛ рдЫрд╛рдпрд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдЗрд╕ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдЬрдореЗ рд╣реБрдП рд╕реБрдиреНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдереАред

рдореИрдВрдиреЗ рдПрдирд╛рдХреЛрдВрдбрд╛ рд╡рд┐рддрд░рдг рдореЗрдВ _init_numpy_mkl() рдХреЛ рдЖрдкрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕рдиреЗ windows/system32 рдореЗрдВ рдЕрд╕рдВрдЧрдд рдбреЙрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред

рд╕реБрди рдХрд░ рдЦреБрд╢реА рд╣реБрдИ!

_Init_numpy_mkl () рдореЗрдВ рдХреЛрдб @cgohlke рдХреЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╡рд┐рддрд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рддрд╣рдд рд╣реИред
@cgohlke : https://github.com/numpy/numpy/issues/6923#issuecomment -169073613 рдкрд░ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА?

@ sebastian-schmidt, рдХреНрдпрд╛ рдЖрдк AddDllDirectory (рдпрд╛ рдПрдХ рд╕реЗрдЯрдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ SetDllDirectoryW) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдКрдкрд░ рджреЗрдЦреЗрдВ: https://github.com/numpy/numpy/issues-6923#issuecomment -16849090201

@carlkl , AddDllDirectory / SetDllDirectoryW рд╕рдВрд╕реНрдХрд░рдг рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рд╣рдореЗрд╢рд╛ рдбреЗрдирд┐рдпрд▓рдЬрд┐рдпрд░ рджреНрд╡рд╛рд░рд╛ рдХреЗрд╡рд▓ np.dot() рдЙрджрд╛рд╣рд░рдг рдерд╛ред
рд╕рд╛рдЗрдб рдиреЛрдЯ рдкрд░, mkl рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ Amplitube рдерд╛ рди рдХрд┐ Asio4all рдбреНрд░рд╛рдЗрд╡рд░ред

рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╡рд╛рдкрд╕ рдПрдореНрдкрд▓реАрдЯреНрдпреВрдм рдкрд░ рдЯреНрд░реЗрд╕ рдХрд░рддрд╛ рд╣реВрдВред

рдЬрдм рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА: рджреЛрдиреЛрдВ init рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде import matplotlib.pyplot as plt рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

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

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

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдирд╛рдХреЛрдВрдбрд╛ рдХреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ рдПрдордкреНрд▓рд┐рдЯреНрдпреВрдм рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред

@ sebastian-schmidt, рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдмреЙрдХреНрд╕ рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╕реБрдиреНрди, рд╕реНрдХрд┐рдкреА, matplotlib._png рдЖрдпрд╛рдд рдХрд░рдирд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рд╕реЗ MKL DLL рдХреЛ рд╣рдЯрд╛рдирд╛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдордп?

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВред рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ 1.12 + mkl рдХрд╛ рдЕрдВрдХ рд╣реИ рдФрд░ рдЙрд╕реА рдореБрджреНрджреЗ рдкрд░ рдерд╛ред рдореИрдВрдиреЗ Amplitube 3 рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ!

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ,

рдореИрдВ рдмрд╕ рд╕реЗ рдирд╡реАрдирддрдо numpy + MKL 1.13 рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдпрд╣рд╛рдБ @cgohlke рджреНрд╡рд╛рд░рд╛ред

рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ 7 рдкрд░ рдПрдирд╛рдХреЛрдВрдбрд╛ w / рдкрд╛рдпрдерди 3.6.1 64-рдмрд┐рдЯ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред

рдЙрд╕рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдпрд╣ DLL рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рднреА рдЙрд╕реА рд╕рд╛рдЗрдЯ рд╕реЗ v1.12 рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдХреЛрдб рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ .... рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

@carlkl рдореИрдВрдиреЗ _init_numpy_mkl рд▓рд┐рдП рдЕрдкрдиреЗ рдПрдирд╛рдХреЛрдВрдбрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЦреЛрдЬрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдореМрдЬреВрдж рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрд╛ред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ numpy/core рдХреЛ рдореЗрд░реЗ PATH env рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рд╣реБрдЖред

рдХреЛрдИ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡?

рдзрдиреНрдпрд╡рд╛рджред

рдЬрдм рдореИрдВрдиреЗ рд╕реНрдХрд┐рдореЗрдЬ рдЖрдпрд╛рдд рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ "mkl_intel_thread.dll рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА" рд╕реЗ рдорд┐рд▓реАред
рдореБрдЭреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ / рд╕рд┐рд╕реНрдЯрдо 32 рдореЗрдВ рдХреЛрдИ mkl_intel_thread.dll рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ libiomp5md.dll рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ @cgohlke рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИя╝Б рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рд╕рдорд╕реНрдпрд╛ рдиреЗ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рдЦрд╛ рд╣реИред рд╡реИрд╕реЗ рднреА, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓реЗ, рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред Libiomp5md.dll рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ https://github.com/numpy/numpy/issues/6923#issuecomment -169073613 MKL DLL рдХреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ / рд╕рд┐рд╕реНрдЯрдо 32 рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдирд┐рдкреЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдХрд┐ PATH рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд╛рджреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдЕрдиреНрдп рддрд░рдХреАрдмреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ (рдХреЛрд░) рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╛рдд (рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВ) MKL DLL рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрди 7 DLL рдХреЛ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЕрдиреНрдп рд╕рднреА рдЖрд╡рд╢реНрдпрдХ MKL DLL рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ / рд╕рд┐рд╕реНрдЯрдо 32 рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдЦреНрдпрд╛рддреНрдордХ / рдХреЛрд░ рд╕реЗ рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВред

рдпрд╣ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рднреА рдХрд▓реНрдкрдиреАрдп szenarios рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдореЗ рд╣реБрдП рдЕрдЬрдЧрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ Windows OS рд╕рдВрд╕реНрдХрд░рдг DLL рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рд╡реИрд░рд┐рдПрдВрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдлрд╛рдпрджреЗрдордВрдж рд╣реИред

рд╣рдо SetDefaultDllDirectories рд╕рд╛рде рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЪрд▓реЗ рдЧрдП, # 10229 рдиреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рдлрд┐рд░ # 11493 рдиреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдЧрдП рд╣реИрдВ, рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ PATH рд╕реЗ mkl рдХреА рдЕрдиреНрдп рдкреНрд░рддрд┐рдпрд╛рдБ рдирд┐рдХрд╛рд▓рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдпрджрд┐ рдЖрдк рдЕрд╕рд╣рдордд рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕