Numpy: Numpy 1.10.2 + MKL = تحطم (Windows)

تم إنشاؤها على ٢ يناير ٢٠١٦  ·  30تعليقات  ·  مصدر: numpy/numpy

سواء كنت تستخدم Anacondas 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 (الذي تم اختباره على Python 3.3.5) بشكل جيد (ولكن لا يوجد أعلى من .dll في دليله أيضًا).

في الوقت الحالي ، قمت بخفض التصنيف إلى Numpy 1.9. أعلم أنك لا تختبر MKL ولكن ربما لديك بعض التلميحات؟

معلومات النظام

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

التعليق الأكثر فائدة

cgohlke هذه هي ملفات DLL الموجودة في دليل Windows الخاص بي:

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

محاولة إعادة تعيين PATH الخاص بي باستخدام SET PATH=; قبل استدعاء Python لا يزال يتعطل ولكن إزالة ملفات DLL أعلاه بالكامل من دليل Windows توقف التعطل. يبدو أنه مشكلة أسبقية المسارcarlkl.

ال 30 كومينتر

حسنًا ، لا أعرف ما الذي يحدث هنا. قامت Intel بإجراء بعض التغييرات على البنية ، لكنني لا أعتقد أن هذه التغييرات متضمنة. Python 3.5 هو الجاني المحتمل لأنه تم تجميعه باستخدام أحدث VS على windows. cgohlke الأفكار؟

أعتقد أن أفضل رهان لك هو توفير أداة إعادة إنتاج (ما هي "بعض الوظائف" التي تنتج هذا؟) ، وإما أن تأمل أن تظهر الإجابة

آسف ل "بعض الوظائف" :) - تحطمت بشكل غير مباشر على الرغم من matplotlib.

هذا يتعطل تمامًا:

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)

لقد أجريت فحصًا سريعًا باستخدام أحدث

>>> 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 تم العثور عليه في مكان ما على PATH . تحديد موقع MKL DLLs عن طريق تمديد PATH كما هو الحال في numpy + MKL يكون هشًا إذا تم تثبيت وقت تشغيل MKL آخر على النظام.

هل توجد أي ملفات libiomp5md.dll أو mkl_*.dll في الدلائل C: \ Windows *؟

cgohlke ، في numpy + MKL ، أدخلت _init_numpy_mkl() لإضافة numpy.core إلى PATH .

هل فكرت في النهج التالي من https://gist.github.com/matham/f6a07f8fb5e403feb440 لتغيير ترتيب بحث DLL؟

أنظر أيضا:
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 هذه هي ملفات DLL الموجودة في دليل Windows الخاص بي:

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

محاولة إعادة تعيين PATH الخاص بي باستخدام SET PATH=; قبل استدعاء Python لا يزال يتعطل ولكن إزالة ملفات DLL أعلاه بالكامل من دليل Windows توقف التعطل. يبدو أنه مشكلة أسبقية المسارcarlkl.

cgohlke ، أقترح التغيير التالي للاختبار مع numpy + MKL's __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 أعلاه بالكامل من دليل Windows يؤدي إلى إيقاف التعطل.

خلاص جيد.

أقترح التغيير التالي للاختبار مع numpy + MKL's __init__.py

لن يعمل ذلك حقًا على الأنظمة القديمة والأهم من ذلك أنه يكسر الحزم التي تعتمد على ترتيب بحث DLL للنظام . قد يكون مقبولاً لتوزيعات مثل Anaconda أو WinPython.

أجد أنه من الممتع أنني عثرت في البداية على طريقة AddDllDirectory في wiki numpy والتي تم إرجاعها جزئيًا إلى استخدامي لها هنا بواسطة AddDllDirectory . إنها دائرة كاملة ...

على أي حال ، كنت أرغب في ملاحظة للآخرين الذين يفكرون في استخدام هذا ، أن السطر ctypes.windll.kernel32.SetDefaultDllDirectories(0x1000) (وأي من العلامات الخالية من الصفر) تسبب استثناءات ImportError: DLL load failed: The parameter is incorrect عند تحميل بعض dlls. بالنسبة لي ، حدث ذلك على وجه التحديد مع الامتداد المبني mingw-w64 (mingwpy) المرتبط بـ ffmpeg dlls التي تم تجميعها عبر دبيان باستخدام mingw-w64. لكني لا أعرف ما إذا كان ذلك مسؤولاً.

ومع ذلك ، نظرًا لأن python يستدعي LoadLibraryEx فقط بـ LOAD_WITH_ALTERED_SEARCH_PATH وليس بـ LOAD_LIBRARY_SEARCH_USER_DIRS ، ما لم يتم استدعاء SetDefaultDllDirectories أيضًا بـ LOAD_LIBRARY_SEARCH_USER_DIRS ، LoadLibraryEx لن يبحث في الدلائل المضافة بـ AddDllDirectory . بالنسبة لي ، يبدو هذا هشًا للاستخدام ، لذا أعتقد أنني سأعود مرة أخرى إلى إضافة دليل dll إلى المسار باستخدام os.environ . أتساءل ما إذا كان يجب علي تحديث الويكي بهذه المعلومات ، رغم ذلك؟

على أي حال ، آمل أن هذا لم يكن بعيدًا عن الموضوع.

matham ، يجب إضافة مقتطف الشفرة هذا إلى _zooba_ - راجع https://pytools.codeplex.com/workitem/1627. السطر ctypes.windll.kernel32.SetDefaultDllDirectories(0x1000) لا يغير سلوك LoadLibraryEx مع LOAD_WITH_ALTERED_SEARCH_PATH . إنه _ نأمل _ يغير سلوك LoadLibraryA (_ بدون _ 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) والتي قد ينتج عنها ملف dll غير موجود لاحقًا عند الاستيراد. على الرغم من أنني أعتقد أن هذا قد لا يكون مشكلة هنا إذا تم استيراده على الفور.

cgohlke ، هل هناك خطأ في التحميل المسبق لـ MKL_RT.DLL و MKL_INTEL_THREAD.DLL و MKL_CORE.DLL مع اسم المسار الصريح إلى numpy.core ضمن _init_numpy_mkl() ؟ لست متأكدًا مما إذا كان التحميل التدريجي لملفات DLLs MKL الضرورية الأخرى يعمل بعد ذلك.

cgohlke ،

يضمن المقتطف التالي (؟) أن يتم تحميل ملفات DLL MKL من numpy.core وليس من أي نظام windows أو مجلد redist Intel. ترتيب تحميل ملفات DLL مسائل. على الأقل يعمل مع 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

واجهت نفس المشكلة وقمت بتتبعها مرة أخرى لتثبيت mkl_intel_thread.dll في C:\Windows\System32 كما أشار danielgeier.
الإصدار الأقدم لم يكن يحتوي على mkl_aa_fw_get_max_memory بين أشياء أخرى.
تزامن وقت الإنشاء مع تثبيت برامج تشغيل الصوت Asio4all. بعد أن قمت بإلغاء تثبيت تلك الملفات ، التي أزلت العديد من ملفات dll ، عملت مرة أخرى (أفضل من مجرد حذف ملفات dll في system32 بمفردي).
لقد لعبت دورًا في التراجع عن توزيع الأناكوندا وتحديثه ، لكن ذلك لم ينجح. لم أتمكن أيضًا من تعطيل mkl مع الأناكوندا على النوافذ.

@ sebastian-schmidt ، هل يمكنك المحاولة ، إذا كان التحميل الواضح لملفات DLL من المجلد numpy / core مناسبًا لك ، حتى مع تثبيت ملفات DLL القديمة MKL في مجلد نظام Windows. انظر أعلاه: https://github.com/numpy/numpy/issues/6923#issuecomment -169073613

carlkl ، أين علي إضافة المقتطف؟
حاولت إضافته إلى الملف الذي استخدمته كاختبار: https://gist.github.com/sebastian-schmidt/9bb97354b481750209fd3dac1e748d31 ولم ينجح.
المسار المرتبط هو مجرد دليل فرعي من حيث أسمي الملف.
هل يجب علي إضافته إلى وحدة init لوحدة Numpy؟

الوظيفة _init_numpy_mkl() جزء من عجلات cgohlke numpy + 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 . ومع ذلك ، تُفضل مكتبات DLL الموجودة في مجلد نظام windows على مكتبات DLL الموجودة في المسار. مرحبًا بك في DLL الجحيم.

يقوم الإصدار البديل من هذه الوظيفة https://github.com/numpy/numpy/issues/6923#issuecomment -169073613 بتحميل مكتبات DLL من numpy/core بالترتيب الصحيح _ دون تغيير بيئة PATH . يتم إعطاء جميع أسماء ملفات DLL كأسماء ملفات صريحة مع اسم مسار مؤهل بالكامل ، لذلك لا أتوقع حدوث مشكلات في تظليل مكتبات DLL في مجلد نظام Windows ، لكنني لم أختبر ذلك.

ومع ذلك ، لم أكن أهتم بالأحجار المجمدة في مقتطف الشفرة هذا.

لقد غيرت _init_numpy_mkl() في توزيع Anaconda إلى إصدارك ثم عملت (مع ملفات dll غير متوافقة في windows/system32 .

عظيم أن نسمع!

التعليمات البرمجية في _init_numpy_mkl () هو جزء من توزيع نمبايcgohlke الصورة وتحت responibility له.
cgohlke : هل من تعليقات على https://github.com/numpy/numpy/issues/6923#issuecomment -169073613؟

@ sebastian-schmidt ، هل يمكنك اختبار الإصدار باستخدام AddDllDirectory (أو SetDllDirectoryW كبديل احتياطي): انظر أعلاه: https://github.com/numpy/numpy/issues/6923#issuecomment -168490201

carlkl ، يعمل أيضًا إصدار AddDllDirectory / SetDllDirectoryW.
كان الاختبار دائمًا فقط مثال np.dot() بواسطة danielgeier.
في ملاحظة جانبية ، كان البرنامج الذي يثبت مكتبات mkl هو Amplitube وليس برامج تشغيل Asio4all.

أنا أيضًا ، أعيدت المشكلة إلى Amplitube.

عندما حاولت: import matplotlib.pyplot as plt مع كلا الإصدارين الأولي لدي خطأ:

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

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

لذا عدت إلى الإصدار الأصلي من Anaconda وتركت Amplitube غير مثبت.

@ sebastian-schmidt ، على الأقل يعمل معي. يعمل استيراد numpy و scipy و matplotlib._png بدون مشاكل في صندوقي.

ومع ذلك ، فإن إلغاء تثبيت MKL DLLs من مجلدات نظام windows يبدو الحل الأفضل لهذا النوع من المشاكل.

حان الوقت لإغلاق هذه القضية؟

اهلا ياجماعة. فقط في حالة وجود شخص ما مع هذه المشكلة. لدي numpy 1.12 + mkl ولدي نفس المشكلة. لقد قمت بإلغاء تثبيت Amplitube 3 والآن كل شيء يعمل!

اهلا ياجماعة،

لقد قمت للتو بتثبيت أحدث حزمة numpy + mkl 1.13 من هنا بواسطة cgohlke .

أقوم بتشغيل Anaconda w / Python 3.6.1 64 بت على Windows 7.

بعد ذلك حصلت على مشكلة DLL هذه أيضًا ، كانت تعمل بشكل جيد مع الإصدار 1.12 من نفس الموقع من قبل.

للإضافة ، تعمل جميع التعليمات البرمجية في الواقع في دفتر Jupyter .... هذا يحدث فقط في وحدة التحكم.

carlkl لقد بحثت في مجلد Anaconda عن _init_numpy_mkl لكن لم أتمكن من العثور على الملف الذي يحتوي على هذه السلسلة. لم ينجح أيضًا إلحاق numpy/core بمتغير env PATH بي يدويًا.

أي اقتراحات أخرى؟

شكر.

عندما قمت باستيراد skimage ، واجهت المشكلة "لا يمكن تحميل mkl_intel_thread.dll".
لا يمكنني العثور على أي ملف mkl_intel_thread.dll في windows / system32 ، لذلك قمت بحذف libiomp5md.dll في هذا المجلد تمامًا كما ذكر cgohlke ، فهو يعمل! شكرًا جزيلاً لك! لقد أزعجتني المشكلة أسابيع. على أي حال ، آمل أن يتمكن الآخرون الذين قابلوا هذه المشكلة من الحصول على المساعدة من هذا. حاول العثور على libiomp5md.dll ، فقد يساعدك.

أتساءل عما إذا كان https://github.com/numpy/numpy/issues/6923#issuecomment -169073613 يعمل في هذه الحالة دون الحاجة إلى إزالة MKL DLLs من windows / system32. يوضح هذا المقتطف ، أنه من الممكن تحميل سبعة (ولكن ليس كل) ملفات DLL في المجلد numpy / core دون الحاجة إلى تمرير libs إضافية إلى متغير بيئة PATH أو استخدام حيل أخرى. من المهم تحميل مكتبات DLL السبعة هذه بالتسلسل الصحيح. يتم بعد ذلك تحميل جميع مكتبات DLL الأخرى المطلوبة من MKL تلقائيًا من numpy / core بدلاً من مجلد windows / system32.

ليس من الواضح حتى الآن ما إذا كان هذا يعمل في جميع szenarios التي يمكن تصورها. على سبيل المثال تطبيقات بيثون المجمدة. كما قد تختلف إصدارات نظام التشغيل Windows في سلوك تحميل DLL.

يبدو لي أنه من المفيد إجراء مزيد من التحقيق في هذا البديل.

ذهبنا ذهابًا وإيابًا مع SetDefaultDllDirectories ، أضافه # 10229 ثم أزاله # 11493. أعتقد أننا ذهبنا إلى أبعد ما نستطيع مع هذا. يبدو أن الخيار الأفضل هو إزالة النسخ الأخرى من mkl من PATH.

يرجى إعادة الفتح إذا كنت لا توافق.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات