μλ νμΈμ, μ€μΉ 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
κ° μμ΅λλ€.
μ, κ·Έλμ. 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-bitκ° μ¬κΈ°μ λ¬Έμ κ° λ μ μλμ§ νμ ν μ μμλ€. νμ§λ§ .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 kivy kivy.deps.glew kivy.deps.sdl2 νμ
μ΄λ¦: ν€λΉ
λ²μ : 1.10.0
μμ½: νλμ¨μ΄ κ°μ λ©ν°ν°μΉ μ ν리μΌμ΄μ
μ μ μν κ°λ°μ μν μννΈμ¨μ΄ λΌμ΄λΈλ¬λ¦¬.
ννμ΄μ§: http://kivy.org
μμ±μ: Kivy Team λ° κΈ°ν κΈ°μ¬μ
μμ±μ-μ΄λ©μΌ: [email protected]
λΌμ΄μΌμ€: MIT
μμΉ: c:\users\jedingtoappdata\roaming\python\python36\site-packages
νμ: docutils, Kivy-Garden, pygments
μ΄λ¦: kivy.deps.glew
λ²μ : 0.1.9
μμ½: Kivyμ μ¬ν¨ν€μ§λ λ°μ΄λ리 μ’
μμ±.
ννμ΄μ§: http://kivy.org/
μ μ: ν€λΉ ν¬λ£¨
μμ±μ-μ΄λ©μΌ: [email protected]
λΌμ΄μΌμ€: MIT
μμΉ: 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, 2018λ
3μ 28μΌ, 17:00:18) [MSC v.1900 64λΉνΈ(AMD64)] on win32
μμΈν λ΄μ©μ λ³΄λ €λ©΄ "λμλ§", "μ μκΆ", "ν¬λ λ§" λλ "λΌμ΄μΌμ€"λ₯Ό μ
λ ₯νμμμ€.
kivy.app κ°μ Έμ€κΈ° μ±μμ
[INFO ] [Logger ] C:\Users\jedingto.kivy\logs\kivy_18-05-17_4.txtμ λ‘κ·ΈμΈ κΈ°λ‘
[μ 보] [ν€λΉ] v1.10.0
[μ 보] [νμ΄μ¬] v3.6.5 (v3.6.5:f59c0932b4, 2018λ 3μ 28μΌ, 17:00:18) [MSC v.1900 64λΉνΈ(AMD64)]
[μ 보] [곡μ₯] 194κ°μ κΈ°νΈκ° λ‘λλ¨
[μ 보] [μ΄λ―Έμ§] 곡κΈμ: img_tex, img_dds, img_gif (img_sdl2, img_pil, img_ffpyplayer 무μ)
kivy.uix.widget κ°μ Έμ€κΈ° μμ ―μμ
ν΄λμ€ PongGame(μμ ―):
... ν΅κ³Όνλ€
...
ν΄λμ€ PongApp(μ±):
... def λΉλ(μ체):
... PongGame() λ°ν
...
νμ±().run()
[μ€μ] [μ°½] κ°μΉ μλ μ°½ 곡κΈμλ₯Ό μ°Ύμ μ μμ΅λλ€.
sdl2 - ImportError: DLL λ‘λ μ€ν¨: μ§μ λ λͺ¨λμ μ°Ύμ μ μμ΅λλ€.
core_select_libμ "C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core__init__.py" νμΌ, 59ν
fromlist=[λͺ¨λ μ΄λ¦], λ 벨=0)
νμΌ "C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py", 26ν,
kivy.core.window._window_sdl2μμ _WindowSDL2Storage κ°μ Έμ€κΈ°
[μ€μ] [μ± ] μ°½μ κ°μ Έμ¬ μ μμ΅λλ€. μ€λ¨νμμμ€.
````
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 λλ ν°λ¦¬ 161,199,689,728λ°μ΄νΈ μ¬μ 곡κ°
````
--user
kivy.deps.sdl
λ₯Ό μ κ±°νκ³ κ΄λ¦¬μ λͺ¨λλ₯Ό ν΅ν΄ C:\Program Files\Python\share\sdl2
μ μ€μΉν΄λ μ€λ₯κ° λ°μνλ€κ³ μΆκ°ν΄μΌ ν©λλ€.
````
νμ±().run()
[μ€μ] [μ°½] κ°μΉ μλ μ°½ 곡κΈμλ₯Ό μ°Ύμ μ μμ΅λλ€.
sdl2 - ImportError: DLL λ‘λ μ€ν¨: μ§μ λ λͺ¨λμ μ°Ύμ μ μμ΅λλ€.
core_select_libμ "C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core__init__.py" νμΌ, 59ν
fromlist=[λͺ¨λ μ΄λ¦], λ 벨=0)
νμΌ "C:\Users\jedingtoAppData\Roaming\Python\Python36\site-packages\kivy\core\window\window_sdl2.py", 26ν,
kivy.core.window._window_sdl2μμ _WindowSDL2Storage κ°μ Έμ€κΈ°
[μ€μ] [μ± ] μ°½μ κ°μ Έμ¬ μ μμ΅λλ€. μ€λ¨νμμμ€.
````
python3
$λ₯Ό μ€ννκΈ° μ μ SDL2.dll
μμ μλ λλ ν λ¦¬λ‘ cd
λ₯Ό μ
λ ₯ν΄λ μλνμ§ μμ΅λλ€.
μ’μ΅λλ€. μ¬κΈ°μλ μ¬λ¬ κ°μ§κ° μμ΅λλ€.
.dll
λ ν΄λΉ λλ ν 리μ μμ΄μΌ ν©λλ€....\site-packages\kivy\deps\sdl2\__init__.py
νμΌμ΄ λ‘λλκ³ .dll
λ₯Ό κ°λ¦¬ν΅λλ€.μ§κΈκΉμ§λ μ¬νν μ μμμ§λ§ 3. λ°°μ ν μ μλ κ²μ λλ€.
μλν΄ λ³Ό μ μλ λ λ€λ₯Έ λ°©λ²μ λͺ λ Ή ν둬ννΈλ₯Ό μ΄κ³ sdl2 ν΄λμμ μ§μ PATHλ₯Ό κ°λ¦¬ν΅λλ€. λ€μκ³Ό κ°μ κ²:
\> 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
"무μλ¨" μΉμ
μ img_sdl2
κ° μλμ§ μ¬λΆμ SDL2λ₯Ό μ°Ύμ μ μλμ§ μ¬λΆμ λ°λΌ νμ₯λ μ€λ₯ ν
μ€νΈκ° λνλκ±°λ μ¬λΌμ§λ κ²μ PATHμμ λ°λ³΅μ μΌλ‘ μΆκ° λ° μ κ±°νμ¬ νμΈνμ΅λλ€.
μ΄μ 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.) __init__.py
in site-packages\kivy\deps\...
μ μ΄λ©΄ κΈ°λ³Έμ μΌλ‘ μλν΄μΌ ν¨μ μ μ μμ΅λλ€. μ΄μ λλ λΉμ μ κ²½μ°μ²λΌ μ νν λ΄ κ²μ λΆμλ λ°©λ²μ μ°ΎμμΌν©λλ€. :μλ€:
μ΄κ² μμ©μ΄ μλμ?
````
κ°μ Έμ€κΈ° pdb
pdb.run()
ν€λ³΄λ μΈν°λ½νΈ
μκ³ κΈ°
ν€λ³΄λ μΈν°λ½νΈ
pdb.run("kivy.core.window._window_sdl2μμ _WindowSDL2Storage κ°μ Έμ€κΈ°")(1) ()
(Pdb) s
--λΆλ₯΄λ€--(966)_find_and_load()
(PDB)(968)_find_and_load()
(PDB)
--λΆλ₯΄λ€--(143)__μ΄κΈ°ν__()
(PDB)(144)__μ΄κΈ°ν__()
(PDB)(145)__μ΄κΈ°ν__()
(PDB)
--λ°ν--(145)__init__()->μμ
(PDB)
--λΆλ₯΄λ€--(147)__enter__()
(PDB)(148)__enter__()
(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)
ν€ μ€λ₯: '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)__μ΄κΈ°ν__()
(PDB)(59)__μ΄κΈ°ν__()
(PDB)(60)__μ΄κΈ°ν__()
(PDB)(61)__μ΄κΈ°__()
(PDB)(62)__μ΄κΈ°__()
(PDB)(63)__μ΄κΈ°__()
(PDB)(64)__μ΄κΈ°__()
(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)__enter__()
(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)__enter__()
(PDB)
--λ°ν--(149)__enter__()->μμ
(PDB)
ν€ μ€λ₯: 12616(968)_find_and_load()
(PDB)
--λ°ν--(968)_find_and_load()->μμ
(PDB)
ν€ μ€λ₯: 12616(1) ()
(PDB)
--λ°ν--(1) ()->μμ
(PDB)
ν€ μ€λ₯: 12616
c:\program filespython36\lib\bdb.py(434)run()
-> exec(cmd, μ μ, μ§μ)
(PDB)
c:\program filespython36\lib\bdb.py(435)run()
-> BdbQuit μ μΈ:
(PDB)
c:\program filespython36\lib\bdb.py(438)run()
-> self.quitting = μ¬μ€
(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
μ λμΌλ©΄ μ’κ² μ΅λλ€.
κ΅¬μ± μ°½ 10 python 363(λΉμ£ΌμΌ μ€νλμ€ 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λ₯Ό μ€μΉνκ³ μ¬μ©μ κΆν(user laurent)μ μ¬μ©νμ¬ μ€ννλ €κ³ νλ©΄ μ€λ₯κ° λ°μν©λλ€. [CRITICAL] [Window] Unable to find λͺ¨λ κ°μΉ μλ μ°½ μ 곡μ.
sdl2 - ImportError: DLL λ‘λ μ€ν¨: μ§μ λ λͺ¨λμ μ°Ύμ μ μμ΅λλ€.
μ ν΄λμ λͺ¨λ dllμ 볡μ¬νλ©΄ λ¬Έμ κ° ν΄κ²°λ©λλ€. μ μ§λ¬Έμ kivyλ₯Ό μ΄λ»κ² μ€μΉνμ¬ μ¬μ©μ κΆνμΌλ‘ kivyλ₯Ό μ€νν μ μμ΅λκΉ?
PS μ£μ‘ν©λλ€ μ λ μμ΄μ νμ΄μ¬μ μνμ§ λͺ»ν©λλ€
그건 κ·Έλ κ³ , λΉμ μ
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.glew
kivy.deps.angle
λ₯Ό μ€μΉνμ΅λλ€.
λ‘κ·Έ:
```(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
[μ 보] [νμ΄μ¬] v3.7.0 (v3.7.0:1bf9cc5093, 2018λ
6μ 27μΌ, 04:59:51) [MSC v.1914 64λΉνΈ(AMD64)]
[μ 보] [곡μ₯] 194κ°μ κΈ°νΈκ° λ‘λλ¨
[μ 보] [μ΄λ―Έμ§] 곡κΈμ: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer 무μ)
[μ 보] [ν
μ€νΈ] 곡κΈμ: sdl2
[μ 보] [μ°½] 곡κΈμ: sdl2
[μ€μ] [μ°½] κ°μΉ μλ μ°½ 곡κΈμλ₯Ό μ°Ύμ μ μμ΅λλ€.
sdl2 - ImportError: DLL λ‘λ μ€ν¨: μ§μ λ λͺ¨λμ μ°Ύμ μ μμ΅λλ€.
core_select_libμ "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core__init__.py" νμΌ, 67ν
cls = cls()
νμΌ "C:\Users\henry\DOCUME~1\SIDEPR~1\fps\venv\lib\site-packages\kivy\core\window\window_sdl2.py", 140ν, __init__
super(WindowsSDL, self).__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._WindowSDL2Storage.setup_windowμ νμΌ "kivy\core\window_window_sdl2.pyx", 125ν
νμΌ "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(μ΄λ¦[λ 벨:], ν¨ν€μ§, λ 벨)
νμΌ "
νμΌ "
νμΌ "
νμΌ "
νμΌ "
νμΌ "
νμΌ "
[μ€μ] [μ± ] μ°½μ κ°μ Έμ¬ μ μμ΅λλ€. μ€λ¨νμμμ€.
```
μ΄ λ¬Έμ μμ λλ λΌμ΄λΈλ¬λ¦¬ μν€ν
μ²(64λΉνΈμ Python, 32λΉνΈμ SDL2)λ₯Ό νΌν©νλ κ²μ 보μμΌλ―λ‘ μ΄κ²μ΄ 첫 λ²μ§Έ μ€μ§μ
λλ€. κ·Έλ¦¬κ³ μ, μμΉλ₯Ό νΌν©νλ©΄ λΌμ΄λΈλ¬λ¦¬κ° μ ν μ¬μ©λμ§ μκ³ Kivyκ° μλνμ§ μμ΅λλ€.
kivy.deps.sdl2λ₯Ό ν΅ν SDL2 μ€μΉκ° μλν΄μΌ ν©λλ€.
python 3.7μ μ¬μ©νκ³ μλλ° μ΄ μ€λ₯κ° λ°μν©λλ€. ν€λΉ λ²μ μ 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.glew
kivy.deps.angle
λ₯Ό μ€μΉνμ΅λλ€.λ‘κ·Έ:
[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
...μ μΆκ°νλ λ³΄λ€ μ μμ μΈ λ°©λ²μ΄ μλμ§ κΆκΈν©λλ€.