Kivy: ๋‹ค์Œ์œผ๋กœ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์—์„œ kivy๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2014๋…„ 04์›” 26์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kivy/kivy

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

ํ„ฐ์น˜ ์Šคํฌ๋ฆฐ์ด ์žˆ๋Š” texy 2.8" ์ปฌ๋Ÿฌ LCD๋กœ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์—์„œ kivy๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. http://kivy.org/docs/installation/installation-rpi.html ์ง€์นจ์„ ์ •ํ™•ํžˆ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜์—†์ด ์ž˜ ๋นŒ๋“œ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๋นŒ๋“œ์™€ ์ „์—ญ ๋นŒ๋“œ ์˜ต์…˜์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์…ธ ๋ช…๋ น์ค„๊ณผ X์˜ xterm์—์„œ ์‹คํ–‰์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์•„์ด๋””์–ด? ์ด๊ฒƒ์€ ํ„ฐ์น˜ ์Šคํฌ๋ฆฐ์— ๋Œ€ํ•œ http://www.raspberrypi.org/forums/viewtopic.php?f=45&t=64993 ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” texy ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๋Š” raspbian ์ตœ์‹  ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_14-04-26_2.txt
[INFO   ] Kivy v1.8.1-dev
[INFO   ] [Python      ] v2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3]
[INFO   ] [Factory     ] 157 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pygame, img_gif (img_pil ignored)
[ERROR  ]
Traceback (most recent call last):
  File "/home/pi/kivy/kivy/lang.py", line 1186, in execute_directives
    mod = __import__('.'.join(package.split('.')[:-1]))
  File "/home/pi/kivy/kivy/extras/highlight.py", line 3, in <module>
    from pygments.lexer import RegexLexer, bygroups, using
ImportError: No module named pygments.lexer
 Traceback (most recent call last):
   File "main.py", line 212, in <module>
     ShowcaseApp().run()
   File "/home/pi/kivy/kivy/app.py", line 773, in run
     self.load_kv(filename=self.kv_file)
   File "/home/pi/kivy/kivy/app.py", line 593, in load_kv
     root = Builder.load_file(rfilename)
   File "/home/pi/kivy/kivy/lang.py", line 1546, in load_file
     return self.load_string(data, **kwargs)
   File "/home/pi/kivy/kivy/lang.py", line 1593, in load_string
     parser = Parser(content=string, filename=fn)
   File "/home/pi/kivy/kivy/lang.py", line 1122, in __init__
     self.parse(content)
   File "/home/pi/kivy/kivy/lang.py", line 1220, in parse
     self.execute_directives()
   File "/home/pi/kivy/kivy/lang.py", line 1197, in execute_directives
     package)
 kivy.lang.ParserException: Parser: File "./showcase.kv", line 2:
 ...
       1:#:kivy 1.8.0
 >>    2:#:import KivyLexer kivy.extras.highlight.KivyLexer
       3:#:import Factory kivy.factory.Factory
       4:
 ...
 Unable to import package 'kivy.extras.highlight.KivyLexer'

๋ฌธ์•ˆ ์ธ์‚ฌ

์‰ฌํ”„ํ„ฐ

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ์ข…์†์„ฑ์€ ์‹ค์ œ๋กœ ์ด์™€ ๊ฐ™์ด ๋‚˜์—ด๋˜์–ด์•ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? RPi์— Kivy๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณต์‹ ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ฅด๋ฉด ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ๊ธฐ ์œ„ํ•ด GitHub์˜ ๋ฌธ์ œ๋ฅผ ํŒŒํ—ค์ณ์•ผ ํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค์†Œ ์งœ์ฆ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ๋ชจ๋Š” ์‹œ์Šคํ…œ์— Kivy๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์œผ๋กœ ๋‚˜์—ด๋œ ๊ฒƒ๊ณผ ํ•จ๊ป˜ ๋ฌธ์ œ ์—†์ด ์‹คํ–‰๋˜๋Š” ๋ฐ๋ชจ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‡ผ์ผ€์ด์Šค์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์ถฉ์กฑ๋˜์ง€ ์•Š์œผ๋ฉด ์ตœ์†Œํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

๋ชจ๋“  6 ๋Œ“๊ธ€

Showcase ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” Kivy ์™ธ์— 2๊ฐœ์˜ ํŒจํ‚ค์ง€๊ฐ€ ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€
pyglet(Lexer) ๋ฐ docutil๋„ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๋“ค์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์™€ ํ•จ๊ป˜:
sudo pip ์„ค์น˜ pyglet docutils

2014๋…„ 4์›” 26์ผ ํ† ์š”์ผ ์˜ค์ „ 5์‹œ 36๋ถ„, shifters67 [email protected] ์ž‘์„ฑ:

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์—์„œ kivy๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
ํ„ฐ์น˜ ์Šคํฌ๋ฆฐ์ด ์žˆ๋Š” texy 2.8" ์ปฌ๋Ÿฌ LCD๋กœ
์ง€์นจ http://kivy.org/docs/installation/installation-rpi.html์ •ํ™• ํ•˜๊ณ  ๋ชจ๋‘ ์˜ค๋ฅ˜ ์—†์ด ์ •์ƒ์ ์œผ๋กœ ๋นŒ๋“œ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ๋นŒ๋“œ์™€ ์ „์—ญ ๋นŒ๋“œ ์˜ต์…˜์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์…ธ ๋ช…๋ น์ค„๊ณผ X์˜ xterm์—์„œ ์‹คํ–‰์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฐ™์€ ์˜ค๋ฅ˜.

์–ด๋–ค ์•„์ด๋””์–ด? ์ด๊ฒƒ์€ texy ์ˆ˜์ • ์‚ฌํ•ญ์ด์žˆ๋Š” raspbian ์ตœ์‹  ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ http://www.raspberrypi.org/forums/viewtopic.php?f=45&t=64993
ํ„ฐ์น˜ ์Šคํฌ๋ฆฐ.

INFO ] [Logger ] /home/pi/.kivy/logs/kivy_14-04-26_2.txt์— ๋กœ๊ทธ์ธ ๊ธฐ๋ก
[์ •๋ณด] ํ‚ค๋น„ v1.8.1-dev
[์ •๋ณด] [ํŒŒ์ด์ฌ] v2.7.3 (๊ธฐ๋ณธ๊ฐ’, 2014๋…„ 3์›” 18์ผ, 05:13:23)
[GCC 4.6.3]
[INFO] [Factory] 157๊ฐœ์˜ ๊ธฐํ˜ธ๊ฐ€ ๋กœ๋“œ๋จ
[์ •๋ณด] [์ด๋ฏธ์ง€] ์ œ๊ณต์ž: img_tex, img_dds, img_pygame, img_gif (img_pil
๋ฌด์‹œ)
[์˜ค๋ฅ˜]
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "/home/pi/kivy/kivy/lang.py", 1186ํ–‰, execute_directives
๋ชจ๋“œ = _import_('.'.join(package.split('.')[:-1]))
ํŒŒ์ผ "/home/pi/kivy/kivy/extras/highlight.py", 3ํ–‰, in
pygments.lexer์—์„œ RegexLexer ๊ฐ€์ ธ์˜ค๊ธฐ, ๊ทธ๋ฃน๋ณ„, ์‚ฌ์šฉ
ImportError: pygments.lexer๋ผ๋Š” ๋ชจ๋“ˆ์ด ์—†์Šต๋‹ˆ๋‹ค.
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "main.py", 212ํ–‰,
์‡ผ์ผ€์ด์Šค์•ฑ().run()
ํŒŒ์ผ "/home/pi/kivy/kivy/app.py", 773ํ–‰, ์‹คํ–‰ ์ค‘
self.load_kv(ํŒŒ์ผ๋ช…=self.kv_file)
load_kv์˜ ํŒŒ์ผ "/home/pi/kivy/kivy/app.py", 593ํ–‰
๋ฃจํŠธ = Builder.load_file(rfilename)
load_file์˜ ํŒŒ์ผ "/home/pi/kivy/kivy/lang.py", 1546ํ–‰
๋ฐ˜ํ™˜ self.load_string(๋ฐ์ดํ„ฐ, *_kwargs)
load_string์˜ ํŒŒ์ผ "/home/pi/kivy/kivy/lang.py", 1593ํ–‰
ํŒŒ์„œ = ํŒŒ์„œ(๋‚ด์šฉ=๋ฌธ์ž์—ด, ํŒŒ์ผ๋ช…=fn)
ํŒŒ์ผ "/home/pi/kivy/kivy/lang.py", ์ค„ 1122, *init_
self.parse(์ฝ˜ํ…์ธ )
ํŒŒ์ผ "/home/pi/kivy/kivy/lang.py", 1220ํ–‰, ๊ตฌ๋ฌธ ๋ถ„์„ ์ค‘
self.execute_directives()
ํŒŒ์ผ "/home/pi/kivy/kivy/lang.py", 1197ํ–‰, execute_directives
ํŒจํ‚ค์ง€)
kivy.lang.ParserException: ํŒŒ์„œ: ํŒŒ์ผ "./showcase.kv", 2ํ–‰:
...
1:#:ํ‚ค๋น„ 1.8.0

2:#:KivyLexer ๊ฐ€์ ธ์˜ค๊ธฐ kivy.extras.highlight.KivyLexer
3:#:๊ณต์žฅ ๊ฐ€์ ธ์˜ค๊ธฐ kivy.factory.Factory
4:
...
ํŒจํ‚ค์ง€ 'kivy.extras.highlight.KivyLexer'๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์•ˆ ์ธ์‚ฌ

์‰ฌํ”„ํ„ฐ

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/kivy/kivy/issues/2115 ์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

๋ฒค ๋ฃจ์‹œ
[email protected]
http://clusterbleep.net/

๋น ๋ฅธ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์œ„์˜ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์•„์ด๋””์–ด?

์‚ฌ์ง„ ๋ฐ๋ชจ ๋กœ๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” ์—†์ง€๋งŒ ๋ฏธ๋‹ˆ ํ™”๋ฉด์—๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ํฐ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜์ง€๋งŒ ์ ์–ด๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

๋“œ๋ผ์ด๋ฒ„ ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด texy ์ œ์ž‘์ž์—๊ฒŒ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์•ˆ ์ธ์‚ฌ

์‰ฌํ”„ํ„ฐ

pyglet์ด ์•„๋‹ˆ๋ผ pygments๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค :) brosch์˜ ์˜คํƒ€์˜€์Šต๋‹ˆ๋‹ค. CodeInput ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  Kivy ์ž์ฒด์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. docutils์™€ ๋™์ผํ•˜๊ฒŒ RstDocument ์œ„์ ฏ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

์ž‘๋™์‹œํ‚ค๋ ค๋ฉด:

buildozer.spec :

requirements = kivy,pil,sqlite3,pygments,docutils

์ด ์ข…์†์„ฑ์€ ์‹ค์ œ๋กœ ์ด์™€ ๊ฐ™์ด ๋‚˜์—ด๋˜์–ด์•ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? RPi์— Kivy๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณต์‹ ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ฅด๋ฉด ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ๊ธฐ ์œ„ํ•ด GitHub์˜ ๋ฌธ์ œ๋ฅผ ํŒŒํ—ค์ณ์•ผ ํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค์†Œ ์งœ์ฆ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ๋ชจ๋Š” ์‹œ์Šคํ…œ์— Kivy๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์œผ๋กœ ๋‚˜์—ด๋œ ๊ฒƒ๊ณผ ํ•จ๊ป˜ ๋ฌธ์ œ ์—†์ด ์‹คํ–‰๋˜๋Š” ๋ฐ๋ชจ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‡ผ์ผ€์ด์Šค์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์ถฉ์กฑ๋˜์ง€ ์•Š์œผ๋ฉด ์ตœ์†Œํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰