嗨,我正在尝试从安装 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()
这在您的系统(PowerShell)上说明了什么:
python -m pip freeze | select-string cython
@dolang它说
'select-string' 未被识别为内部或外部命令,
可运行的程序或批处理文件。
是的,对不起,不清楚。 您需要在 PowerShell 中执行该操作。 它是 DOS 提示符的替代品。
使用Win + x
然后选择它,或在命令提示符下键入powershell
。 您将有PS
作为提示的前 2 个字母。
哦好的。 在powershell中它说
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
也许您必须重新安装 64 位 Python 解释器。 (只是猜测,还不确定。)
我这样做了
得到 kivy.deps.sdl2==0.1.17
我已经卸载了 32 位并在其位置安装了 64 位 Python,但是仍然出现此错误
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 策略设置,它可能会因此被自动阻止。 也许以下可以提供帮助?
根据之前的评论,您有 cython 0.27.3 并且控制台日志显示 Kivy v1.10.0 ...这些版本不兼容,尽管我不确定为什么缺少窗口提供程序是解决此问题的第一个线索。 .. 也许尝试使用 cython 0.25.2(与 1.10 兼容)+ 重新安装 kivy,或者使用当前的 cython 版本使用pip install kivy==master
?
我也遇到了这个问题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 Team 和其他贡献者
作者邮箱: [email protected]
执照:麻省理工学院
位置:c:\users\jedingtoappdata\roaming\python\python36\site-packages
需要:docutils、Kivy-Garden、pygments
名称:kivy.deps.glew
版本:0.1.9
摘要:重新打包的 Kivy 二进制依赖项。
主页:http: //kivy.org/
作者:基维船员
作者邮箱: [email protected]
执照:麻省理工学院
位置:c:\users\jedingtoappdata\roaming\python\python36\site-packages
要求:
名称:kivy.deps.sdl2
版本:0.1.17
摘要:重新打包的 Kivy 二进制依赖项。
主页:http: //kivy.org/
作者:基维船员
作者邮箱: [email protected]
许可证:zlib
位置:c:\users\jedingtoappdata\roaming\python\python36\site-packages
要求:
要求:
````
运行它会给出以下信息:
````
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 位 (AMD64)] 在 win32
输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
从 kivy.app 导入应用程序
[INFO ] [Logger ] 在 C:\Users\jedingto.kivy\logs\kivy_18-05-17_4.txt 记录日志
[信息] [基维] v1.10.0
[信息] [Python] v3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 位 (AMD64)]
[INFO] [Factory] 194 个符号已加载
[信息] [图像] 提供者:img_tex、img_dds、img_gif(img_sdl2、img_pil、img_ffpyplayer 被忽略)
从 kivy.uix.widget 导入小部件
类 PongGame(小部件):
... 经过
...
类 PongApp(应用程序):
...定义构建(自我):
...返回 PongGame()
...
PongApp().run()
[CRITICAL] [Window] 找不到任何有价值的 Window 提供程序。
sdl2 - ImportError: DLL load failed: 找不到指定的模块。
文件“C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core__init__.py”,第 59 行,位于 core_select_lib
fromlist=[模块名称],级别=0)
文件“C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py”,第 26 行,在
从 kivy.core.window._window_sdl2 导入 _WindowSDL2Storage
[CRITICAL] [App] 无法获取窗口,中止。
````
尽管存在 SDL2 DLL:
````
目录 %AppData%\Python\sharesdl2\bin\SDL2.dll
驱动器 C 中的卷为 XXXXXX
卷序列号为 0000-0000
C:\Users\USERAppData\Roaming\Python\sharesdl2\bin 目录
2018-05-17 11:33 AM 1,254,400 SDL2.dll
1 个文件 1,254,400 字节
0 Dir(s) 161,199,689,728 字节空闲
````
我应该补充一点,即使我从--user
模式卸载kivy.deps.sdl
并通过管理员模式将其安装到C:\Program Files\Python\share\sdl2
中,也会发生这种错误,错误是相同的:
````
PongApp().run()
[CRITICAL] [Window] 找不到任何有价值的 Window 提供程序。
sdl2 - ImportError: DLL load failed: 找不到指定的模块。
文件“C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core__init__.py”,第 59 行,位于 core_select_lib
fromlist=[模块名称],级别=0)
文件“C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py”,第 26 行,在
从 kivy.core.window._window_sdl2 导入 _WindowSDL2Storage
[CRITICAL] [App] 无法获取窗口,中止。
````
如果我cd
$ 在运行python3
SDL2.dll
旁边的目录,它甚至都不起作用
好吧,这里有几件事在起作用:
.dll
必须存在于该目录中...\site-packages\kivy\deps\sdl2\__init__.py
被加载并指向.dll
到目前为止,我一直无法重现它,但是 3. 是不能排除的。
您可以尝试的另一件事:打开命令提示符并将 PATH 直接指向 sdl2 文件夹。 就像是:
\> set PATH=C:\Users\USER\AppData\Roaming\Python\share\sdl2\bin;%PATH%
@dolang好吧,似乎将SDL2.dll
文件夹添加到%PATH%
修复了....该错误的一部分。 img_sdl2
现在不再“忽略”,但仍然是“无法找到任何有价值的窗口提供程序”。 它还给出了一些略有不同(几乎完全扩展?)的错误消息
[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
我通过反复在 PATH 中添加和删除它来确认“忽略”部分中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^""
但不幸的是,这本身并不是一个解决方案
pip-installed-python-libraries 应该如何进入它们必须进入的PATH
才能运行? (重启是不够的)
这只是让我了解图书馆是否真的被封锁的线索。 好在他们不是。
如上所述(第 2 点),您可以看到,如果您在site-packages\kivy\deps\...
中打开__init__.py
$ ,但这应该是开箱即用的。 现在我需要找到一种方法来打破我的情况,就像你的情况一样。 :微笑:
这有什么用吗?
````
导入 pdb
pdb.run()
键盘中断
羊肉
键盘中断
pdb.run("从 kivy.core.window._window_sdl2 导入 _WindowSDL2Storage")(1) ()
(pdb) 秒
- 称呼 -(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)
键错误:12616(101)获取()
(pdb)
- 返回 -(101)获取()->无
(pdb)
键错误:12616(149)__进入__()
(pdb)
- 返回 -(149)__enter__()->无
(pdb)
键错误:12616(968)_find_and_load()
(pdb)
- 返回 -(968)_find_and_load()->无
(pdb)
键错误:12616(1) ()
(pdb)
- 返回 -(1) ()->无
(pdb)
键错误:12616
c:\程序文件python36\lib\bdb.py(434)run()
-> exec(cmd,全局变量,局部变量)
(pdb)
c:\程序文件python36\lib\bdb.py(435)run()
-> 除了 BdbQuit:
(pdb)
c:\程序文件python36\lib\bdb.py(438)run()
-> self.quitting = True
(pdb)
回溯(最近一次通话最后):
文件 ”",第 1 行,在
运行中的文件“C:\Program Files\Python36\lib\pdb.py”,第 1572 行
Pdb().run(语句、全局变量、局部变量)
运行中的文件“C:\Program Files\Python36\lib\bdb.py”,第 434 行
exec(cmd,全局变量,本地变量)
文件 ”",第 1 行,在
文件 ”",第 968 行,在 _find_and_load
文件 ”",第 149 行,在 __enter__
文件 ”",第 101 行,在获取中
键错误:12616
````
好,
一些进一步的测试表明,如果kivy.deps.glew
和kivy.deps.sdl2
都以管理员模式安装,则它可以正常工作。
我认为问题在于太多被硬编码到site-packages\kivy\deps\*\__init__.py
我想知道是否有更规范的方法将 Pip 包中的 DLL 添加到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 (share/sdl2 share/angle share/glew share/gstreamer) 复制到存储库中,然后将此存储库添加到路径变量。
我使用管理员权限(https://kivy.org/docs/installation/installation-windows.html)安装了kivy,我尝试使用用户权限(用户laurent)运行然后发生错误:[CRITICAL] [Window] 无法找到任何有价值的窗口提供程序。
sdl2 - ImportError: DLL load failed: 找不到指定的模块。
复制新文件夹中的所有 dll 可以解决问题。 我的问题是如何安装 kivy 以使用用户权限运行 kivy ?
PS对不起,我的英语和python不好
顺便说一句,你熟悉
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所做的事情,将这两个文件复制到另一个目录中,然后将该目录添加到路径中。 使用带有两个 PATH 选项的 virtualenv 对我也不起作用。
我正在使用 python 3.7,所以我安装kivy.deps.angle
而不是kivy.deps.glew
日志:
```(venv) C:\Users\henry\Documents\Side Projects\fps>py main.py
[INFO ] [Logger ] 在 C:\Users\henry.kivy\logs\kivy_18-09-15_16.txt 记录日志
[信息] [基维] v1.10.1
[信息] [Python] v3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 位 (AMD64)]
[INFO] [Factory] 194 个符号已加载
[信息] [图像] 提供者:img_tex、img_dds、img_sdl2、img_gif(img_pil、img_ffpyplayer 被忽略)
[信息] [文本] 提供者:sdl2
[信息] [窗口] 提供者:sdl2
[CRITICAL] [Window] 找不到任何有价值的 Window 提供程序。
sdl2 - ImportError: DLL load failed: 找不到指定的模块。
文件“C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core__init__.py”,第 67 行,在 core_select_lib
cls = cls()
文件“C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\window_sdl2.py”,第 140 行,在 __init__
超级(WindowSDL,自我).__init__()
文件“C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window__init__.py”,第 968 行,在 __init__
self.create_window()
文件“C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\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
return _bootstrap._gcd_import(name[level:], package, level)
文件 ”
文件 ”
文件 ”
文件 ”
文件 ”
文件 ”
文件 ”
[CRITICAL] [App] 无法获取窗口,中止。
```
在这个问题上,我看到了混合库架构(64 位 Python,32 位 SDL2),所以这是第一站。 是的,如果您混合了拱门,则根本不会使用库,并且 Kivy 将无法工作。
通过 kivy.deps.sdl2 安装 SDL2 应该可以。
我正在使用 python 3.7,我收到了这个错误。 kivy 版本是 1.10.1
我该如何解决
同样在这里 python 3.7 , kivy 版本是 1.10.1 并尝试了所有方法来加载 DLL 但毫不留情。
我遇到过同样的问题。 这个视频可以帮助那些有视觉的人! https://youtu.be/gt-qndBYrCQ
有很多问题,但设法解决了。 这是我学到的(使用 PyCharm):
1) 你不能在 Python 3.8 上安装 Kivy。 如果您有 3.8,请返回 3.7。
2)我安装了其他人发布图片的所有软件包。 我会在这里发布我的。 转到您的项目解释器并点击“+”按钮将它们全部添加。 他们应该成功安装。
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所做的事情,将这两个文件复制到另一个目录中,然后将该目录添加到路径中。 使用带有两个 PATH 选项的 virtualenv 对我也不起作用。我正在使用 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。
它对我有用
最有用的评论
好,
一些进一步的测试表明,如果
kivy.deps.glew
和kivy.deps.sdl2
都以管理员模式安装,则它可以正常工作。我认为问题在于太多被硬编码到
site-packages\kivy\deps\*\__init__.py
我想知道是否有更规范的方法将 Pip 包中的 DLL 添加到
PATH
...?