Kivy: فشل تحميل Kivy sdl2 DLL

تم إنشاؤها على ٢٦ مارس ٢٠١٨  ·  29تعليقات  ·  مصدر: kivy/kivy

  • بيثون: 3.6.4
  • نظام التشغيل: Windows 10
  • كيفي: 1.10.0
  • طريقة تركيب كيفي:
    python -m pip install - upgrade pip wheel setuptools
    python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
    تثبيت python -m pip kivy.deps.gstreamer
    تثبيت python -m pip kivy.deps.angle
    python -m pip تثبيت kivy
    تثبيت python -m pip kivy_examples
    وسادة تثبيت بيثون م
    python -m pip تثبيت cython
    تثبيت Python -m pip PyEnchant

وصف

مرحبًا ، أحاول تشغيل رمز المثال من تثبيت Kivy. التالي هو الخطأ الذي أتلقى مرة أخرى. اي مساعدة ستكون عظيمة لقد حاولت النظر في الاستفسارات السابقة حول مشاكل مماثلة ، ولكن لم يتم اقتراح أي شيء بشأنها حتى الآن.

[INFO   ] [Logger      ] Record log in C:\Users\DoddJ\.kivy\logs\kivy_18-03-26_52.txt
[INFO   ] [Kivy        ] v1.10.0
[INFO   ] [Python      ] v3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pil, img_gif (img_sdl2, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
sdl2 - ImportError: DLL load failed: The specified module could not be found.
  File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\core\__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)
  File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 26, in <module>
    from kivy.core.window._window_sdl2 import _WindowSDL2Storage

[CRITICAL] [App         ] Unable to get a Window, abort.
 Exception ignored in: 'kivy.properties.dpi2px'
 Traceback (most recent call last):
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\utils.py", line 496, in __get__
     retval = self.func(inst)
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\metrics.py", line 174, in dpi
     EventLoop.ensure_window()
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\base.py", line 127, in ensure_window
     sys.exit(1)
 SystemExit: 1
[CRITICAL] [App         ] Unable to get a Window, abort.

الكود والسجلات

الرمز الذي أحاول تشغيله:

import kivy
kivy.require('1.10.0') # replace with your current kivy version !

from kivy.app import App
from kivy.uix.label import Label


class MyApp(App):

    def build(self):
        return Label(text='Hello world')


if __name__ == '__main__':
    MyApp().run()
documentation Windows

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

نحن سوف،

تظهر بعض الاختبارات الإضافية أنها تعمل بشكل صحيح إذا تم تثبيت كلا من kivy.deps.glew و kivy.deps.sdl2 في وضع المسؤول.

أعتقد أن المشكلة تكمن في تحويل الكثير من الترميز إلى site-packages\kivy\deps\*\__init__.py

أتساءل عما إذا كانت هناك طريقة أكثر تقليدية لإضافة مكتبات DLL من حزم Pip إلى PATH ...؟

ال 29 كومينتر

ماذا يقول هذا على نظامك (بوويرشيل):

python -m pip freeze | select-string cython

dolang تقول
لم يتم التعرف على "select-string" كأمر داخلي أو خارجي ،
برنامج قابل للتشغيل أو ملف دفعي.

نعم ، آسف لم يكن ذلك واضحًا. تحتاج إلى تنفيذ ذلك في بوويرشيل. إنه بديل موجه DOS.

استخدم Win + x ثم حدده ، أو اكتب powershell في موجه الأوامر. سيكون لديك PS كأول حرفين من الموجه.

حسنا. يقول في بوويرشيل

Cython==0.27.3

حسنًا ، حاولت إعادة إنتاجها في بيئة متشابهة وليست متشابهة بدون حظ. بشكل أساسي ، ما يقوله الخطأ هو أن مكتبة sdl2 مفقودة. ولكن كان يجب تثبيته بـ python -m pip install kivy.deps.sdl2 الموجود في وصفك الأصلي في مكان ما.

سأحاول إعادة إنتاج هذا على جهاز آخر مرة أخرى ، يمكنك محاولة pip uninstall ... + pip install ... تلك التبعية في هذه الأثناء.

حاولت على جهاز آخر الآن ، وحصلت على نفس النتيجة (أي أنها تعمل هنا). ما الذي لديك من اجل:

PS  C:\> python -m pip freeze | select-string sdl2

يجب أن يمنحك: kivy.deps.sdl2==0.1.17 .

بدلاً من ذلك ، إذا كان لديك العديد من مترجمي Python المثبتين:

PS  C:\> py -3.6 -m pip freeze | select-string sdl2

إذا لم يمنحك أحد هذين الأمرين المخرجات أعلاه ، فحاول إعادة تثبيت kivy.deps.sdl2 .

إذا فعلوا ذلك ولم ينجح الأمر ، فالرجاء لصق ما تحصل عليه:

PS C:\> dir C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36-32\share\sdl2\bin

ربما يتعين عليك إعادة تثبيت مترجم Python 64 بت. (مجرد تخمين ، لست متأكدًا بعد.)

فعلت ذلك و

احصل على kivy.deps.sdl2 == 0.1.17

لقد قمت بإلغاء تثبيت 32 بت وتثبيت Python 64 بت في مكانه ، ومع ذلك ، ما زلت أحصل على هذا الخطأ

H:\untitled2\Scripts\python.exe "C:/Users/DoddJ/PycharmProjects/untitled/KIVY TEST.py"
[INFO   ] [Logger      ] Record log in C:\Users\DoddJ\.kivy\logs\kivy_18-03-28_40.txt
[INFO   ] [Kivy        ] v1.10.0
[INFO   ] [Python      ] v3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pil, img_gif (img_sdl2, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.

[CRITICAL] [App         ] Unable to get a Window, abort.
 Exception ignored in: 'kivy.properties.dpi2px'
 Traceback (most recent call last):
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36\lib\site-packages\kivy\utils.py", line 496, in __get__
     retval = self.func(inst)
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36\lib\site-packages\kivy\metrics.py", line 174, in dpi
     EventLoop.ensure_window()
   File "C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36\lib\site-packages\kivy\base.py", line 127, in ensure_window
     sys.exit(1)
 SystemExit: 1
[CRITICAL] [App         ] Unable to get a Window, abort.

Process finished with exit code 1

حسنًا ، لم أكن متأكدًا مما إذا كانت 32/64 بت هي المشكلة هنا. ولكن هل يمكنك معرفة ما إذا كان .dll موجودًا بالفعل؟

PS C:\> dir C:\Users\dev.DoddJ\AppData\Local\Programs\Python\Python36\share\sdl2\bin

إذا كان هناك ، فربما يقوم ماسح الفيروسات الخاص بك بحظره ، أو جدار الحماية الخاص بك (أو بعض البرامج الأخرى المتطفلة حقًا)؟ هذا ليس شيئًا يجب أن يحدث ، إيمهو.

تحرير: إلقاء نظرة على التثبيت الخاص بي مرة أخرى وفتح تطبيق قيد التشغيل في Process Hacker. تم تصميم SDL2.dll هذا خصيصًا لـ PyPI ويبدو أنه بدون توقيع. اعتمادًا على إعدادات سياسة Windows الخاصة بك ، قد يتم حظره تلقائيًا بسبب ذلك. ربما يمكن أن يساعد ما يلي؟

Windows 10: إلغاء حظر الملف في نظام التشغيل Windows 10

وفقًا للتعليق السابق ، لديك cython 0.27.3 ويقول سجل وحدة التحكم Kivy v1.10.0 ... هذه الإصدارات غير متوافقة ، على الرغم من أنني لست متأكدًا تمامًا من سبب كون موفر النافذة المفقود هو أول دليل على هذه المشكلة .. .. ربما جرب إما استخدام cython 0.25.2 (متوافق مع 1.10) + إعادة تثبيت kivy ، أو بدلاً من ذلك pip install kivy==master مع إصدار cython الحالي؟

أتلقى هذه المشكلة أيضًا مع Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32

""
C:> python3 -m pip show kivy kivy.deps.glew kivy.deps.sdl2
الاسم: كيفي
الإصدار: 1.10.0
الملخص: مكتبة برامج للتطوير السريع لتطبيقات اللمس المتعدد المسرَّعة بالأجهزة.
الصفحة الرئيسية: http://kivy.org
المؤلف: فريق Kivy ومساهمين آخرين
المؤلف البريد الإلكتروني: [email protected]
الترخيص: MIT
الموقع: c: \ users \ jedingtoappdata \ roaming \ python \ python36 \ site -pack
يتطلب: docutils ، Kivy-Garden ، pygments

مطلوب من قبل:

الاسم: kivy.deps.glew
الإصدار: 0.1.9.2
ملخص: التبعية الثنائية المعاد تجميعها لـ Kivy.
الصفحة الرئيسية: http://kivy.org/
المؤلف: Kivy Crew
المؤلف البريد الإلكتروني: [email protected]
الترخيص: MIT
الموقع: c: \ users \ jedingtoappdata \ roaming \ python \ python36 \ site -pack
يتطلب:

مطلوب من قبل:

الاسم: kivy.deps.sdl2
الإصدار: 0.1.17.1
ملخص: التبعية الثنائية المعاد تجميعها لـ Kivy.
الصفحة الرئيسية: http://kivy.org/
المؤلف: Kivy Crew
المؤلف البريد الإلكتروني: [email protected]
الترخيص: zlib
الموقع: c: \ users \ jedingtoappdata \ roaming \ python \ python36 \ site -pack
يتطلب:
مطلوب من قبل:
""

تشغيله يعطي ما يلي:

""
Python 3.6.5 (v3.6.5: f59c0932b4 ، 28 مارس 2018 ، 17:00:18) [MSC v.1900 64 بت (AMD64)] على win32
اكتب "مساعدة" أو "حقوق طبع ونشر" أو "ائتمانات" أو "ترخيص" لمزيد من المعلومات.

من تطبيق استيراد kivy.app
[INFO] [المسجل] سجل الدخول C: \ Users \ jedingto.kivy \ logs \ kivy_18-05-17_4.txt
[INFO] [Kivy] v1.10.0
[INFO] [Python] v3.6.5 (v3.6.5: f59c0932b4 ، 28 مارس 2018 ، 17:00:18) [MSC v.1900 64 بت (AMD64)]
[INFO] [المصنع] تم تحميل 194 رمزًا
[INFO] [صورة] الموفرون: img_tex ، img_dds ، img_gif (تم تجاهل img_sdl2 ، img_pil ، img_ffpyplayer)
من أداة استيراد kivy.uix.widget
فئة PongGame (القطعة):
... نجاح
...
فئة PongApp (التطبيق):
... def build (self):
... عودة PongGame ()
...
PongApp (). run ()
[حاسمة] [نافذة] غير قادر على العثور على أي مزود Window ذي قيمة.
sdl2 - خطأ استيراد: فشل تحميل DLL: تعذر العثور على الوحدة النمطية المحددة.
ملف "C: \ Users \ jedingtoAppData \ Roaming \ Python \ Python36 \ site -pack \ kivy \ core__init __. py" ، السطر 59 ، في core_select_lib
fromlist = [modulename] ، المستوى = 0)
ملف "C: \ Users \ jedingtoAppData \ Roaming \ Python \ Python36 \ site -pack \ kivy \ core \ window \ window_sdl2.py" ، السطر 26 ، في
من kivy.core.window._window_sdl2 import _WindowSDL2Storage

[حرجة] [التطبيق] تعذر الحصول على نافذة ، إحباط.
""

على الرغم من وجود SDL2 DLL:

""
dir٪ AppData٪ \ Python \ shareddl2 \ bin \ SDL2.dll
الحجم في محرك الأقراص C هو XXXXXX
الرقم التسلسلي لوحدة التخزين هو 0000-0000

دليل C: \ Users \ USERAppData \ Roaming \ Python \ shareddl2 \ bin

2018-05-17 11:33 صباحًا 1،254،400 SDL2.dll
1 ملف (ملفات) 1،254،400 بايت
0 درهم 161،199،689،728 بايت مجانًا
""

ويجب أن أضيف أن هذا يحدث حتى إذا قمت بإلغاء تثبيت kivy.deps.sdl من وضع --user وقمت بتثبيته في C:\Program Files\Python\share\sdl2 عبر وضع المسؤول ، فإن الخطأ هو نفسه:

""

PongApp (). run ()
[حاسمة] [نافذة] غير قادر على العثور على أي مزود Window ذي قيمة.
sdl2 - خطأ استيراد: فشل تحميل DLL: تعذر العثور على الوحدة النمطية المحددة.
ملف "C: \ Users \ jedingtoAppData \ Roaming \ Python \ Python36 \ site -pack \ kivy \ core__init __. py" ، السطر 59 ، في core_select_lib
fromlist = [modulename] ، المستوى = 0)
ملف "C: \ Users \ jedingtoAppData \ Roaming \ Python \ Python36 \ site -pack \ kivy \ core \ window \ window_sdl2.py" ، السطر 26 ، في
من kivy.core.window._window_sdl2 import _WindowSDL2Storage

[حرجة] [التطبيق] تعذر الحصول على نافذة ، إحباط.

""

لا ينجح الأمر حتى إذا دخلت إلى الدليل بجوار cd SDL2.dll قبل تشغيل python3 مباشرة

حسنًا ، هناك العديد من الأشياء التي تعمل هنا:

  1. يجب أن يكون .dll موجودًا في هذا الدليل
  2. يتم تحميل الملف ...\site-packages\kivy\deps\sdl2\__init__.py والنقاط إلى .dll
  3. Windows (أو بعض البرامج المتطفلة الأخرى مثل بعض برامج فحص الفيروسات) نفسها لا تمنع تحميلها

حتى الآن لم أتمكن من إعادة إنتاجه ، لكن 3. شيء لا يمكن استبعاده.

شيء آخر يمكنك تجربته: افتح موجه الأوامر وقم بتوجيه المسار مباشرة إلى المجلد sdl2. شيء مثل:

\> set PATH=C:\Users\USER\AppData\Roaming\Python\share\sdl2\bin;%PATH%

dolang حسنًا ، يبدو أن إضافة المجلد SDL2.dll إلى %PATH% يصلح .... جزء من هذا الخطأ. img_sdl2 لم يعد "متجاهلاً" الآن ، لكنه لا يزال "غير قادر على العثور على أي موفر خدمة ذي قيمة لـ Window". كما أنه أعطى بعض رسائل الخطأ المختلفة قليلاً (الموسعة بشكل حصري تقريبًا؟)

[INFO ] [Logger ] Record log in C:\Users\jedingto\.kivy\logs\kivy_18-05-17_15.txt [INFO ] [Kivy ] v1.10.0 [INFO ] [Python ] v3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] [INFO ] [Factory ] 194 symbols loaded [INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored) [INFO ] [OSC ] using <thread> for socket [INFO ] [Window ] Provider: sdl2 [CRITICAL] [Window ] Unable to find any valuable Window provider. sdl2 - ImportError: DLL load failed: The specified module could not be found. File "C:\Users\jedingto\AppData\Roaming\Python\Python36\site-packages\kivy\core\__init__.py", line 67, in core_select_lib cls = cls() File "C:\Users\jedingto\AppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py", line 140, in __init__ super(WindowSDL, self).__init__() File "C:\Users\jedingto\AppData\Roaming\Python\Python36\site-packages\kivy\core\window\__init__.py", line 899, in __init__ self.create_window() File "C:\Users\jedingto\AppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py", line 269, in create_window self.fullscreen, resizable, state) File "kivy\core\window\_window_sdl2.pyx", line 110, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window (kivy\core/window\_window_sdl2.c:2466) File "kivy\graphics\cgl.pyx", line 52, in kivy.graphics.cgl.cgl_get_backend_name (kivy\graphics\cgl.c:3044) File "kivy\graphics\cgl.pyx", line 60, in kivy.graphics.cgl.cgl_get_backend_name (kivy\graphics\cgl.c:2879) File "C:\Program Files\Python36\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 658, in _load_unlocked File "<frozen importlib._bootstrap>", line 571, in module_from_spec File "<frozen importlib._bootstrap_external>", line 922, in create_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

لقد أكدت من خلال إضافة وإزالة ذلك من المسار بشكل متكرر أن وجود img_sdl2 في قسم "التجاهل" يعتمد على ذلك ، وأن نص الخطأ الموسع يظهر أو يختفي اعتمادًا على ما إذا كان يمكنه العثور على SDL2 أم لا.

الآن ، يجب أن يكون للتبعية glew مجلد بجوارها مباشرة ( share\glew\bin ). ماذا يحدث إذا أضفت ذلك أيضًا؟

آها!

لذلك ، في نظام التشغيل Windows ، يمكن "حلها" عن طريق إرسال %AppData%\Python\share\glew\bin;%AppData%\Python\share\sdl2\bin; إلى PATH :

cmd /C "PATH=%AppData%\Python\share\glew\bin;%AppData%\Python\share\sdl2\bin;%PATH% && python3 -c ^"from kivy.core.window._window_sdl2 import _WindowSDL2Storage^""

لكن للأسف هذا ليس حلاً في حد ذاته

كيف يفترض أن تشق مكتبات python المثبتة بنقطة طريقها إلى PATH الذي يجب أن تكون فيه لتعمل؟ (إعادة التشغيل كانت غير كافية)

كان هذا مجرد دليل بالنسبة لي لمعرفة ما إذا كانت المكتبات محظورة بالفعل أم لا. الشيء الجيد أنهم ليسوا كذلك.

كما ذكرنا أعلاه (النقطة 2.) ، يمكنك أن ترى أنه إذا فتحت __init__.py في site-packages\kivy\deps\... ، لكن هذا يجب أن يعمل خارج الصندوق. الآن أنا بحاجة إلى إيجاد طريقة لكسر خاصتي تمامًا كما في حالتك. :ابتسامة:

هل هذا مفيد؟

""

استيراد pdb
pdb.run ()
لوحة المفاتيح المقاطعة
خروف
لوحة المفاتيح المقاطعة
pdb.run ("من kivy.core.window._window_sdl2 import _WindowSDL2Storage")
(1)()
(PDB) s
--يتصل--
(966) _find_and_load ()
(PDB)
(968) _find_and_load ()
(PDB)
--يتصل--
(143) __ init __ ()
(PDB)
(144) __ init __ ()
(PDB)
(145) __ init __ ()
(PDB)
--يعود--
(145) __ init __ () -> لا شيء
(PDB)
--يتصل--
(147) __ أدخل __ ()
(PDB)
(148) __ أدخل __ ()
(PDB)
--يتصل--
(157) _get_module_lock ()
(PDB)
(163) _get_module_lock ()
(PDB)
(164) _get_module_lock ()
(PDB)
(165) _get_module_lock ()
(PDB)
(166) _get_module_lock ()
(PDB)
KeyError: "kivy.core.window._window_sdl2"
(166) _get_module_lock ()
(PDB)
(167) _get_module_lock ()
(PDB)
(168) _get_module_lock ()
(PDB)
(170) _get_module_lock ()
(PDB)
(171) _get_module_lock ()
(PDB)
(174) _get_module_lock ()
(PDB)
--يتصل--
(58) __ init __ ()
(PDB)
(59) __ init __ ()
(PDB)
(60) __ init __ ()
(PDB)
(61) __ init __ ()
(PDB)
(62) __ init __ ()
(PDB)
(63) __ init __ ()
(PDB)
(64) __ init __ ()
(PDB)
--يعود--
(64) __ init __ () -> لا شيء
(PDB)
(176) _get_module_lock ()
(PDB)
(187) _get_module_lock ()
(PDB)
(189) _get_module_lock ().
(PDB)
(191) _get_module_lock ()
(PDB)
--يعود--
(191) _get_module_lock () -> _ ModuleLock ('... 1869402554208)
(PDB)
(149) __ أدخل __ ()
(PDB)
--يتصل--
(78) اقتناء ()
(PDB)
(84) اقتناء ()
(PDB)
(85) اقتناء ()
(PDB)
(86) اقتناء ()
(PDB)
(87) اقتناء ()
(PDB)
(88) اقتناء ()
(PDB)
(89) اقتناء ()
(PDB)
(90) يكتسب ()
(PDB)
(91) اقتناء ()
(PDB)
(92) اقتناء ()
(PDB)
(101) اقتناء ()
(PDB)
KeyError: 12616
(101) اقتناء ()
(PDB)
--يعود--
(101) يكتسب () -> لا شيء
(PDB)
KeyError: 12616
(149) __ أدخل __ ()
(PDB)
--يعود--
(149) __ أدخل __ () -> بلا
(PDB)
KeyError: 12616
(968) _find_and_load ()
(PDB)
--يعود--
(968) _find_and_load () -> بلا
(PDB)
KeyError: 12616
(1)()
(PDB)
--يعود--
(1)() -> بلا
(PDB)
KeyError: 12616
ج: \ program filespython36 \ lib \ bdb.py (434) run ()
-> exec (cmd ، globals ، السكان المحليون)
(PDB)
ج: \ program filespython36 \ lib \ bdb.py (435) run ()
-> باستثناء BdbQuit:
(PDB)
c: \ program filespython36 \ lib \ bdb.py (438) تشغيل ()
-> الاستسلام الذاتي = صحيح
(PDB)
Traceback (آخر مكالمة أخيرة):
ملف ""، السطر 1 ، في
ملف "C: \ Program Files \ Python36 \ lib \ pdb.py" ، السطر 1572 ، قيد التشغيل
Pdb (). run (البيان ، الكرة الأرضية ، السكان المحليون)
ملف "C: \ Program Files \ Python36 \ lib \ bdb.py" ، السطر 434 ، قيد التشغيل
exec (cmd ، globals ، السكان المحليون)
ملف ""، السطر 1 ، في
ملف ""، السطر 968 ، في _find_and_load
ملف ""، السطر 149 ، في __وسط__
ملف ""، السطر 101 ، قيد الاقتناء
KeyError: 12616
""

نحن سوف،

تظهر بعض الاختبارات الإضافية أنها تعمل بشكل صحيح إذا تم تثبيت كلا من kivy.deps.glew و kivy.deps.sdl2 في وضع المسؤول.

أعتقد أن المشكلة تكمن في تحويل الكثير من الترميز إلى site-packages\kivy\deps\*\__init__.py

أتساءل عما إذا كانت هناك طريقة أكثر تقليدية لإضافة مكتبات DLL من حزم Pip إلى PATH ...؟

سؤال جيد ، لكني لا أعرف كيف توصل الفريق إلى الحل الحالي. على الأقل يمكننا تضييقه الآن ، لذا فهذه خطوة للأمام.

بالمناسبة ، هل أنت على دراية بـ virtualenv . أنا عادة أستخدمها ونادرا ما أواجه مشاكل. حتى الآن يمكنك أن تفعل (المشرف):

py -m pip install virtualenv

حساب المستخدم العادي ( .venv هو الاسم المفضل لدي في دليل virtualenv ، قم بتغييره كما تريد):

py -m virtualenv .venv
.venv\Scripts\activate
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy

أضف اختياريًا: python -m pip install kivy.deps.gstreamer

آمل أن أكون قد فهمت ذلك جيدًا.

تكوين windows 10 python 363 (visual studio 2017):

[INFO   ] [Logger      ] Record log in C:\Users\Laurent\.kivy\logs\kivy_18-08-23_29.txt
[INFO   ] [Kivy        ] v1.10.1
[INFO   ] [Python      ] v3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.6.0 NVIDIA 390.77'>
[INFO   ] [GL          ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO   ] [GL          ] OpenGL renderer <b'GeForce GTX 970/PCIe/SSE2'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 6
[INFO   ] [GL          ] Shading version <b'4.60 NVIDIA'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Text        ] Provider: sdl2
Standard library module invoked user code during import; breakpoints disabled for invoked code.
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available
[WARNING] [Accordion   ] not enough space for displaying all children
[WARNING] [Accordion   ] need 132px, got 84px
[WARNING] [Accordion   ] layout aborted.
[WARNING] [Accordion   ] not enough space for displaying all children
[WARNING] [Accordion   ] need 132px, got 84px
[WARNING] [Accordion   ] layout aborted.
[INFO   ] [Base        ] Leaving application in progress...
The thread 'MainThread' (0x13ec) has exited with code 0 (0x0).

لدي نفس المشكلة وقمت بحلها والحل الخاص بي ليس حلاً جيدًا. أقوم بنسخ جميع ملفات dll (مشاركة / sdl2 مشاركة / مشاركة زاوية / مشاركة glew / gstreamer) في مستودع وأضيف هذا المستودع إلى متغير المسار.

لقد قمت بتثبيت kivy باستخدام حق المسؤول (https://kivy.org/docs/installation/installation-windows.html) وحاولت التشغيل باستخدام حق المستخدم (user laurent) ثم حدث الخطأ: [CRITICAL] [Window] تعذر العثور على أي مزود نافذة قيم.
sdl2 - خطأ استيراد: فشل تحميل DLL: تعذر العثور على الوحدة النمطية المحددة.

يؤدي نسخ كافة ملفات dll في مجلد جديد إلى حل المشكلات. سؤالي إذن كيف يمكنني تثبيت kivy لتشغيل kivy بامتياز المستخدم؟

ملاحظة: آسف أنا لست جيدًا في اللغة الإنجليزية والثعبان

بالمناسبة ، هل أنت على دراية بـ virtualenv . أنا عادة أستخدمها ونادرا ما أواجه مشاكل. حتى الآن يمكنك أن تفعل (المشرف):

py -m pip install virtualenv

حساب المستخدم العادي ( .venv هو الاسم المفضل لدي في دليل virtualenv ، قم بتغييره كما تريد):

py -m virtualenv .venv
.venv\Scripts\activate
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy

حاولت استخدام virtualenv لكنها لم تنجح. لا يزال لدي خطأ مماثل. لقد أضفت أيضًا C:\Program Files\Python37\share\sdl2\bin و C:\Program Files\Python37\share\angle\bin إلى PATH بالفعل. وفعلت ما أعتقد أنه فعلته @ LaurentBerger ، انسخ هذين الملفين إلى دليل آخر ، ثم أضف هذا الدليل إلى المسار. لم يعمل استخدام virtualenv مع خياري PATH أيضًا.

أنا أستخدم python 3.7 لذلك قمت بتثبيت kivy.deps.angle بدلاً من kivy.deps.glew

السجلات:
"" (venv) C: \ Users \ henry \ Documents \ Side Projects \ fps> py main.py
[INFO] [المسجل] سجل الدخول C: \ Users \ henry.kivy \ logs \ kivy_18-09-15_16.txt
[INFO] [Kivy] v1.10.1
[INFO] [Python] v3.7.0 (v3.7.0: 1bf9cc5093 ، 27 يونيو 2018 ، 04:59:51) [MSC v.1914 64 بت (AMD64)]
[INFO] [المصنع] تم تحميل 194 رمزًا
[INFO] [صورة] الموفرون: img_tex ، img_dds ، img_sdl2 ، img_gif (تم تجاهل img_pil ، img_ffpyplayer)
[INFO] [نص] المزود: sdl2
مزود [INFO] [نافذة]: sdl2
[حاسمة] [نافذة] غير قادر على العثور على أي مزود Window ذي قيمة.
sdl2 - خطأ استيراد: فشل تحميل DLL: تعذر العثور على الوحدة النمطية المحددة.
ملف "C: \ Users \ henry \ DOCUME ~ 1 \ SIDEPR ~ 1 \ fps \ venv \ lib \ site -pack \ kivy \ core__init __. py" ، السطر 67 ، في core_select_lib
cls = cls ()
ملف "C: \ Users \ henry \ DOCUME ~ 1 \ SIDEPR ~ 1 \ fps \ venv \ lib \ site -pack \ kivy \ core \ window \ window_sdl2.py" ، السطر 140 ، في __init__
سوبر (WindowSDL ، ذاتي) .__ init __ ()
ملف "C: \ Users \ henry \ DOCUME ~ 1 \ SIDEPR ~ 1 \ fps \ venv \ lib \ site -pack \ kivy \ core \ window__init __. py" ، السطر 968 ، في __init__
self.create_window ()
ملف "C: \ Users \ henry \ DOCUME ~ 1 \ SIDEPR ~ 1 \ fps \ venv \ lib \ site -pack \ kivy \ core \ window \ window_sdl2.py" ، السطر 272 ، في create_window
self.fullscreen ، يمكن تغيير حجمها ، حالة)
ملف "kivy \ core \ window_window_sdl2.pyx" ، السطر 125 ، في kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
ملف "kivy \ graphics \ cgl.pyx" ، السطر 52 ، في kivy.graphics.cgl.cgl_get_backend_name
ملف "kivy \ graphics \ cgl.pyx" ، سطر 60 ، في kivy.graphics.cgl.cgl_get_backend_name
ملف "C: \ Users \ henry \ DOCUME ~ 1 \ SIDEPR ~ 1 \ fps \ venv \ lib \ importlib__init __. py" ، السطر 127 ، في import_module
إرجاع _bootstrap._gcd_import (الاسم [المستوى:] ، الحزمة ، المستوى)
ملف ""، السطر 1006 ، في _gcd_import
ملف ""، السطر 983 ، في _find_and_load
ملف ""، السطر 967 ، في _find_and_load_unlocked
ملف ""، السطر 670 ، في _load_unlocked
ملف ""، السطر 583 ، في module_from_spec
ملف ""، السطر 1043 ، في create_module
ملف ""، السطر 219 ، في _call_with_frames_removed

[حرجة] [التطبيق] تعذر الحصول على نافذة ، إحباط.
""

في هذه المسألة ، رأيت خلط معماريات المكتبات (Python في 64 بت ، SDL2 في 32 بت) ، لذا فهذه هي المحطة الأولى. ونعم ، إذا قمت بخلط القوس ، فلن يتم استخدام المكتبات على الإطلاق ولن يعمل Kivy.
يجب أن يعمل تركيب SDL2 عبر kivy.deps.sdl2.

أنا أستخدم python 3.7 ويظهر لي هذا الخطأ. إصدار kivy هو 1.10.1
كيف يمكنني حلها

نفس الشيء هنا python 3.7 ، إصدار kivy هو 1.10.1 وحاول جميع الطرق لتحميل DLL ولكن لا يظهر أي رحمة.

https://stackoverflow.com/questions/49466785/kivy-error-python-2-7-sdl2-import-error/49477111#49477111

هذا يحل مشكلتي التي هي نفس المشكلة التي واجهتك
ارجوا ان يساعدك هذا

كان لي نفس القضية. قد يساعد هذا الفيديو المرئيين! https://youtu.be/gt-qndBYrCQ

كان لديه العديد من المشكلات ، لكنه تمكن من حلها. هذا ما تعلمته (باستخدام PyCharm):
1) لا يمكنك تثبيت Kivy على Python 3.8. إذا كان لديك 3.8 ، فارجع إلى 3.7.
2) لقد قمت بتثبيت جميع الحزم التي نشر شخص آخر صورة لها. سوف أنشر خاصتي هنا. انتقل إلى مترجم المشروع واضغط على زر "+" لإضافتهم جميعًا. يجب عليهم التثبيت بنجاح.
pkg1
pkg2
3) تم الحصول على خطأ النافذة sdl2. شاهدت هذا الفيديو القصير (https://www.youtube.com/watch؟v=e_jv8KsYBrs&t=212s) (بارك الله في هذا الشخص) وغيرت مساراتي في بيئة نظامي.
4) ثم أعدت تثبيت التبعيات من موقع Kivy على الويب - وقد نجحت !!!

أمل أن هذا يساعد شخصاما!!!!

بالمناسبة ، هل أنت على دراية بـ virtualenv . أنا عادة أستخدمها ونادرا ما أواجه مشاكل. حتى الآن يمكنك أن تفعل (المشرف):

py -m pip install virtualenv

حساب المستخدم العادي ( .venv هو الاسم المفضل لدي في دليل virtualenv ، قم بتغييره كما تريد):

py -m virtualenv .venv
.venv\Scripts\activate
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy

حاولت استخدام virtualenv لكنها لم تنجح. لا يزال لدي خطأ مماثل. لقد أضفت أيضًا C:\Program Files\Python37\share\sdl2\bin و C:\Program Files\Python37\share\angle\bin إلى PATH بالفعل. وفعلت ما أعتقد أنه فعلته @ LaurentBerger ، انسخ هذين الملفين إلى دليل آخر ، ثم أضف هذا الدليل إلى المسار. لم يعمل استخدام virtualenv مع خياري PATH أيضًا.

أنا أستخدم python 3.7 لذلك قمت بتثبيت kivy.deps.angle بدلاً من kivy.deps.glew

السجلات:

[INFO   ] [Logger      ] Record log in C:\Users\henry\.kivy\logs\kivy_18-09-15_16.txt
[INFO   ] [Kivy        ] v1.10.1
[INFO   ] [Python      ] v3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
sdl2 - ImportError: DLL load failed: The specified module could not be found.
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\__init__.py", line 67, in core_select_lib
    cls = cls()
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\window_sdl2.py", line 140, in __init__
    super(WindowSDL, self).__init__()
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\__init__.py", line 968, in __init__
    self.create_window()
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\window_sdl2.py", line 272, in create_window
    self.fullscreen, resizable, state)
  File "kivy\core\window\_window_sdl2.pyx", line 125, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
  File "kivy\graphics\cgl.pyx", line 52, in kivy.graphics.cgl.cgl_get_backend_name
  File "kivy\graphics\cgl.pyx", line 60, in kivy.graphics.cgl.cgl_get_backend_name
  File "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 583, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1043, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

[CRITICAL] [App         ] Unable to get a Window, abort.

حاول نسخ مجلدات glew و sdl2 و __init__.py يدويًا من ../site-packages/kivy_deps إلى ../site-packages/kivy/deps.
عملت معي

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