سواء كنت تستخدم 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
حسنًا ، لا أعرف ما الذي يحدث هنا. قامت 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.
يرجى إعادة الفتح إذا كنت لا توافق.
التعليق الأكثر فائدة
cgohlke هذه هي ملفات DLL الموجودة في دليل Windows الخاص بي:
محاولة إعادة تعيين PATH الخاص بي باستخدام
SET PATH=;
قبل استدعاء Python لا يزال يتعطل ولكن إزالة ملفات DLL أعلاه بالكامل من دليل Windows توقف التعطل. يبدو أنه مشكلة أسبقية المسارcarlkl.