{"id":26732,"date":"2025-03-26T14:45:46","date_gmt":"2025-03-26T07:45:46","guid":{"rendered":"https:\/\/hitek.com.vn\/?p=26732"},"modified":"2025-03-26T14:45:46","modified_gmt":"2025-03-26T07:45:46","slug":"python-app-development","status":"publish","type":"post","link":"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/","title":{"rendered":"\ud30c\uc774\uc36c \uc571 \ub9cc\ub4e4\uae30: \uc124\uce58\ubd80\ud130 \ubc30\ud3ec\uae4c\uc9c0 \uc644\ubcbd \uac00\uc774\ub4dc"},"content":{"rendered":"<p>\ud30c\uc774\uc36c\uc740 \uac04\uacb0\ud55c \ubb38\ubc95\uacfc \uac15\ub825\ud55c \uc0dd\ud0dc\uacc4\ub85c \uc571 \uac1c\ubc1c\ubd80\ud130 \ubc30\ud3ec\uae4c\uc9c0 \ubaa8\ub4e0 \uacfc\uc815\uc744 \uc27d\uac8c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uc5b8\uc5b4\uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 <strong>\ud30c\uc774\uc36c\uc73c\ub85c \uc571\uc744 \ub9cc\ub4e4\uae30 \uc704\ud55c \ud544\uc218 \uc124\uce58 \ubc29\ubc95<\/strong>\uacfc <strong>\ud6a8\uc728\uc801\uc778 \ubc30\ud3ec \uc804\ub7b5<\/strong>\uc744 \ub2e8\uacc4\ubcc4\ub85c \uc815\ub9ac\ud588\uc2b5\ub2c8\ub2e4. \uac1c\ubc1c \ucd08\ubcf4\uc790\ubd80\ud130 \uc804\ubb38\uac00\uae4c\uc9c0 \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \uc2e4\uc6a9\uc801\uc778 \uc815\ubcf4\ub97c \ub2f4\uc558\uc73c\ub2c8, \ub05d\uae4c\uc9c0 \uc77d\uc5b4\ubcf4\uc138\uc694!<\/p>\n<hr \/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\ubaa9\ucc28 \ud1a0\uae00\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#1_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EA%B0%9C%EB%B0%9C_%ED%99%98%EA%B2%BD_%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0\" >1. \ud30c\uc774\uc36c \uac1c\ubc1c \ud658\uacbd \uc124\uc815\ud558\uae30<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#1_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EC%84%A4%EC%B9%98\" >(1) \ud30c\uc774\uc36c \uc124\uce58<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#2_%EA%B0%80%EC%83%81_%ED%99%98%EA%B2%BDVirtual_Environment_%EC%84%A4%EC%A0%95\" >(2) \uac00\uc0c1 \ud658\uacbd(Virtual Environment) \uc124\uc815<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#3_%ED%95%84%EC%88%98_%ED%8C%A8%ED%82%A4%EC%A7%80_%EC%84%A4%EC%B9%98\" >(3) \ud544\uc218 \ud328\ud0a4\uc9c0 \uc124\uce58<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#2_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EC%95%B1_%EA%B0%9C%EB%B0%9C_%EB%8C%80%ED%91%9C%EC%A0%81%EC%9D%B8_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC_%EC%84%A0%ED%83%9D\" >2. \ud30c\uc774\uc36c \uc571 \uac1c\ubc1c: \ub300\ud45c\uc801\uc778 \ud504\ub808\uc784\uc6cc\ud06c \uc120\ud0dd<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#%EC%98%88%EC%8B%9C_Flask%EB%A1%9C_%EA%B0%84%EB%8B%A8%ED%95%9C_%EC%9B%B9_%EC%95%B1_%EB%A7%8C%EB%93%A4%EA%B8%B0\" >\uc608\uc2dc: Flask\ub85c \uac04\ub2e8\ud55c \uc6f9 \uc571 \ub9cc\ub4e4\uae30<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#3_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EC%95%B1_%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0\" >3. \ud30c\uc774\uc36c \uc571 \ubc30\ud3ec\ud558\uae30<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#1_%EC%8B%A4%ED%96%89_%ED%8C%8C%EC%9D%BC%EB%A1%9C_%EB%B3%80%ED%99%98_PyInstaller\" >(1) \uc2e4\ud589 \ud30c\uc77c\ub85c \ubcc0\ud658 (PyInstaller)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#2_%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C_%EB%B0%B0%ED%8F%AC_AWS_Heroku\" >(2) \ud074\ub77c\uc6b0\ub4dc \ubc30\ud3ec (AWS, Heroku)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#3_%EB%AA%A8%EB%B0%94%EC%9D%BC_%EC%95%B1_%EC%8A%A4%ED%86%A0%EC%96%B4_%EB%B0%B0%ED%8F%AC_Kivy_BeeWare\" >(3) \ubaa8\ubc14\uc77c \uc571 \uc2a4\ud1a0\uc5b4 \ubc30\ud3ec (Kivy, BeeWare)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#4_%EC%B6%94%EA%B0%80_%ED%8C%81_%EC%84%B1%EB%8A%A5_%EC%B5%9C%EC%A0%81%ED%99%94_%EC%9C%A0%EC%A7%80%EB%B3%B4%EC%88%98\" >4. \ucd94\uac00 \ud301: \uc131\ub2a5 \ucd5c\uc801\ud654 &amp; \uc720\uc9c0\ubcf4\uc218<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/python-app-development\/#%EB%A7%88%EB%AC%B4%EB%A6%AC_%EC%A7%80%EA%B8%88_%EB%B0%94%EB%A1%9C_%EB%8F%84%EC%A0%84%ED%95%B4%EB%B3%B4%EC%84%B8%EC%9A%94\" >\ub9c8\ubb34\ub9ac: \uc9c0\uae08 \ubc14\ub85c \ub3c4\uc804\ud574\ubcf4\uc138\uc694!<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"-1-\"><span class=\"ez-toc-section\" id=\"1_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EA%B0%9C%EB%B0%9C_%ED%99%98%EA%B2%BD_%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0\"><\/span><strong>1. \ud30c\uc774\uc36c \uac1c\ubc1c \ud658\uacbd \uc124\uc815\ud558\uae30<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3 id=\"-1-\"><span class=\"ez-toc-section\" id=\"1_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EC%84%A4%EC%B9%98\"><\/span><strong>(1) \ud30c\uc774\uc36c \uc124\uce58<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud30c\uc774\uc36c \uc571 \uac1c\ubc1c\uc744 \uc2dc\uc791\ud558\ub824\uba74 \uba3c\uc800 <strong><a href=\"https:\/\/www.python.org\/downloads\/\" target=\"_blank\" rel=\"noopener\">\uacf5\uc2dd \ud30c\uc774\uc36c \ud648\ud398\uc774\uc9c0<\/a><\/strong>\uc5d0\uc11c \ucd5c\uc2e0 \ubc84\uc804\uc744 \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>Windows<\/strong>: \uc124\uce58 \uc2dc <code>Add Python to PATH<\/code> \uc635\uc158\uc744 \uccb4\ud06c\ud574 \ud130\ubbf8\ub110\uc5d0\uc11c \ubc14\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uac8c \uc124\uc815\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>macOS\/Linux<\/strong>: \ub300\ubd80\ubd84 \uae30\ubcf8\uc801\uc73c\ub85c \uc124\uce58\ub418\uc5b4 \uc788\uc9c0\ub9cc, \ucd5c\uc2e0 \ubc84\uc804 \uc5c5\ub370\uc774\ud2b8\ub97c \uad8c\uc7a5\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre><code class=\"lang-bash\"><span class=\"hljs-comment\"># macOS\/Linux\uc5d0\uc11c \ubc84\uc804 \ud655\uc778  <\/span>\r\npython3 <span class=\"hljs-comment\">--version<\/span>\r\n<\/code><\/pre>\n<h3 id=\"-2-virtual-environment-\"><span class=\"ez-toc-section\" id=\"2_%EA%B0%80%EC%83%81_%ED%99%98%EA%B2%BDVirtual_Environment_%EC%84%A4%EC%A0%95\"><\/span><strong>(2) \uac00\uc0c1 \ud658\uacbd(Virtual Environment) \uc124\uc815<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud30c\uc774\uc36c \ud504\ub85c\uc81d\ud2b8\ub9c8\ub2e4 \ub3c5\ub9bd\uc801\uc778 \ud658\uacbd\uc744 \uc720\uc9c0\ud558\ub824\uba74 \uac00\uc0c1 \ud658\uacbd\uc774 \ud544\uc218\uc785\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-bash\"><span class=\"hljs-meta\"># \uac00\uc0c1 \ud658\uacbd \uc0dd\uc131 (Windows)  <\/span>\r\npython -m venv myenv  \r\n\r\n<span class=\"hljs-meta\"># \uac00\uc0c1 \ud658\uacbd \ud65c\uc131\ud654 (Windows)  <\/span>\r\nmyenv\\Scripts\\activate  \r\n\r\n<span class=\"hljs-meta\"># macOS\/Linux  <\/span>\r\npython3 -m venv myenv  \r\nsource myenv\/bin\/activate\r\n<\/code><\/pre>\n<h3 id=\"-3-\"><span class=\"ez-toc-section\" id=\"3_%ED%95%84%EC%88%98_%ED%8C%A8%ED%82%A4%EC%A7%80_%EC%84%A4%EC%B9%98\"><\/span><strong>(3) \ud544\uc218 \ud328\ud0a4\uc9c0 \uc124\uce58<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>pip<\/code>\ub97c \uc774\uc6a9\ud574 \ud544\uc694\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-bash\">pip <span class=\"hljs-keyword\">install<\/span> flask pandas numpy  <span class=\"hljs-comment\"># \uc608\uc2dc: \uc6f9 \uc571 \uac1c\ubc1c\uc6a9<\/span>\r\n<\/code><\/pre>\n<hr \/>\n<h2 id=\"-2-\"><span class=\"ez-toc-section\" id=\"2_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EC%95%B1_%EA%B0%9C%EB%B0%9C_%EB%8C%80%ED%91%9C%EC%A0%81%EC%9D%B8_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC_%EC%84%A0%ED%83%9D\"><\/span><strong>2. \ud30c\uc774\uc36c \uc571 \uac1c\ubc1c: \ub300\ud45c\uc801\uc778 \ud504\ub808\uc784\uc6cc\ud06c \uc120\ud0dd<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<table>\n<thead>\n<tr>\n<th>\ud504\ub808\uc784\uc6cc\ud06c<\/th>\n<th>\uc6a9\ub3c4<\/th>\n<th>\ud559\uc2b5 \ub09c\uc774\ub3c4<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong><a href=\"https:\/\/flask.palletsprojects.com\/\" target=\"_blank\" rel=\"noopener\">Flask<\/a><\/strong><\/td>\n<td>\uacbd\ub7c9 \uc6f9 \uc571<\/td>\n<td>\uc26c\uc6c0<\/td>\n<\/tr>\n<tr>\n<td><strong><a href=\"https:\/\/www.djangoproject.com\/\" target=\"_blank\" rel=\"noopener\">Django<\/a><\/strong><\/td>\n<td>\ud480\uc2a4\ud0dd \uc6f9 \uc571<\/td>\n<td>\uc911\uac04<\/td>\n<\/tr>\n<tr>\n<td><strong><a href=\"https:\/\/riverbankcomputing.com\/software\/pyqt\/\" target=\"_blank\" rel=\"noopener\">PyQt<\/a><\/strong><\/td>\n<td>\ub370\uc2a4\ud06c\ud1b1 GUI \uc571<\/td>\n<td>\uc911\uac04<\/td>\n<\/tr>\n<tr>\n<td><strong><a href=\"https:\/\/kivy.org\/\" target=\"_blank\" rel=\"noopener\">Kivy<\/a><\/strong><\/td>\n<td>\ubaa8\ubc14\uc77c &amp; \ud06c\ub85c\uc2a4\ud50c\ub7ab\ud3fc \uc571<\/td>\n<td>\uc911\uac04<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li><strong>\uc6f9 \uc571 \uac1c\ubc1c<\/strong> \u2192 Flask\ub098 Django \ucd94\ucc9c<\/li>\n<li><strong>\ub370\uc2a4\ud06c\ud1b1 \uc571<\/strong> \u2192 PyQt, Tkinter<\/li>\n<li><strong>\ubaa8\ubc14\uc77c \uc571<\/strong> \u2192 Kivy, BeeWare<\/li>\n<\/ul>\n<h3 id=\"-flask-\"><span class=\"ez-toc-section\" id=\"%EC%98%88%EC%8B%9C_Flask%EB%A1%9C_%EA%B0%84%EB%8B%A8%ED%95%9C_%EC%9B%B9_%EC%95%B1_%EB%A7%8C%EB%93%A4%EA%B8%B0\"><\/span><strong>\uc608\uc2dc: Flask\ub85c \uac04\ub2e8\ud55c \uc6f9 \uc571 \ub9cc\ub4e4\uae30<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"lang-python\"><span class=\"hljs-keyword\">from<\/span> flask <span class=\"hljs-keyword\">import<\/span> Flask  \r\napp = Flask(__name__)  \r\n\r\n<span class=\"hljs-meta\">@app.route('\/')  <\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">home<\/span><span class=\"hljs-params\">()<\/span>:<\/span>  \r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-string\">\"Hello, Python App!\"<\/span>  \r\n\r\n<span class=\"hljs-keyword\">if<\/span> __name__ == <span class=\"hljs-string\">'__main__'<\/span>:  \r\n    app.run(debug=<span class=\"hljs-keyword\">True<\/span>)\r\n<\/code><\/pre>\n<p><code>python app.py<\/code>\ub85c \uc2e4\ud589 \ud6c4 <code>http:\/\/localhost:5000<\/code> \uc811\uc18d\ud558\uba74 \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n<hr \/>\n<h2 id=\"-3-\"><span class=\"ez-toc-section\" id=\"3_%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EC%95%B1_%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0\"><\/span><strong>3. \ud30c\uc774\uc36c \uc571 \ubc30\ud3ec\ud558\uae30<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3 id=\"-1-pyinstaller-\"><span class=\"ez-toc-section\" id=\"1_%EC%8B%A4%ED%96%89_%ED%8C%8C%EC%9D%BC%EB%A1%9C_%EB%B3%80%ED%99%98_PyInstaller\"><\/span><strong>(1) \uc2e4\ud589 \ud30c\uc77c\ub85c \ubcc0\ud658 (PyInstaller)<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong><a href=\"https:\/\/www.pyinstaller.org\/\" target=\"_blank\" rel=\"noopener\">PyInstaller<\/a><\/strong>\ub97c \uc0ac\uc6a9\ud558\uba74 \ud30c\uc774\uc36c \ucf54\ub4dc\ub97c \ub3c5\ub9bd \uc2e4\ud589 \ud30c\uc77c(<code>.exe<\/code>, <code>.app<\/code>)\ub85c \ubcc0\ud658\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"lang-bash\">pip <span class=\"hljs-keyword\">install<\/span> pyinstaller  \r\npyinstaller --onefile myapp.py  <span class=\"hljs-comment\"># \ub2e8\uc77c \ud30c\uc77c\ub85c \ube4c\ub4dc<\/span>\r\n<\/code><\/pre>\n<h3 id=\"-2-aws-heroku-\"><span class=\"ez-toc-section\" id=\"2_%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C_%EB%B0%B0%ED%8F%AC_AWS_Heroku\"><\/span><strong>(2) \ud074\ub77c\uc6b0\ub4dc \ubc30\ud3ec (AWS, Heroku)<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong><a href=\"https:\/\/www.heroku.com\/\" target=\"_blank\" rel=\"noopener\">Heroku<\/a><\/strong> (\ucd08\ubcf4\uc790 \ucd94\ucc9c)\n<pre><code class=\"lang-bash\">heroku login  \r\nheroku <span class=\"hljs-keyword\">create<\/span> my-python-app  \r\ngit <span class=\"hljs-keyword\">push<\/span> heroku master\r\n<\/code><\/pre>\n<\/li>\n<li><strong><a href=\"https:\/\/aws.amazon.com\/elasticbeanstalk\/\" target=\"_blank\" rel=\"noopener\">AWS Elastic Beanstalk<\/a><\/strong> (\uace0\uae09 \uc0ac\uc6a9\uc790)<\/li>\n<\/ul>\n<h3 id=\"-3-kivy-beeware-\"><span class=\"ez-toc-section\" id=\"3_%EB%AA%A8%EB%B0%94%EC%9D%BC_%EC%95%B1_%EC%8A%A4%ED%86%A0%EC%96%B4_%EB%B0%B0%ED%8F%AC_Kivy_BeeWare\"><\/span><strong>(3) \ubaa8\ubc14\uc77c \uc571 \uc2a4\ud1a0\uc5b4 \ubc30\ud3ec (Kivy, BeeWare)<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Kivy<\/strong>\ub85c \uac1c\ubc1c\ud55c \uc571\uc740 <strong><a href=\"https:\/\/buildozer.readthedocs.io\/\" target=\"_blank\" rel=\"noopener\">Buildozer<\/a><\/strong>\ub97c \uc0ac\uc6a9\ud574 APK\ub85c \ube4c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>BeeWare<\/strong>\uc758 <strong><a href=\"https:\/\/briefcase.readthedocs.io\/\" target=\"_blank\" rel=\"noopener\">Briefcase<\/a><\/strong>\ub85c iOS\/Android \ubc30\ud3ec \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<hr \/>\n<h2 id=\"-4-\"><span class=\"ez-toc-section\" id=\"4_%EC%B6%94%EA%B0%80_%ED%8C%81_%EC%84%B1%EB%8A%A5_%EC%B5%9C%EC%A0%81%ED%99%94_%EC%9C%A0%EC%A7%80%EB%B3%B4%EC%88%98\"><\/span><strong>4. \ucd94\uac00 \ud301: \uc131\ub2a5 \ucd5c\uc801\ud654 &amp; \uc720\uc9c0\ubcf4\uc218<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u2705 <strong>\ub85c\uae45 \uc124\uc815<\/strong>: <code>logging<\/code> \ubaa8\ub4c8\ub85c \uc5d0\ub7ec \ucd94\uc801<br \/>\n\u2705 <strong>\ud14c\uc2a4\ud2b8 \ucf54\ub4dc \uc791\uc131<\/strong>: <code>pytest<\/code>\ub85c \uc548\uc815\uc131 \ud655\ubcf4<br \/>\n\u2705 <strong>CI\/CD \ud30c\uc774\ud504\ub77c\uc778 \uad6c\ucd95<\/strong>: GitHub Actions \ud65c\uc6a9<\/p>\n<hr \/>\n<h2 id=\"-\"><span class=\"ez-toc-section\" id=\"%EB%A7%88%EB%AC%B4%EB%A6%AC_%EC%A7%80%EA%B8%88_%EB%B0%94%EB%A1%9C_%EB%8F%84%EC%A0%84%ED%95%B4%EB%B3%B4%EC%84%B8%EC%9A%94\"><\/span><strong>\ub9c8\ubb34\ub9ac: \uc9c0\uae08 \ubc14\ub85c \ub3c4\uc804\ud574\ubcf4\uc138\uc694!<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\ud30c\uc774\uc36c\uc740 \ucd08\ubcf4\uc790\ub3c4 \uc27d\uac8c \uc571\uc744 \ub9cc\ub4e4\uace0 \ubc30\ud3ec\ud560 \uc218 \uc788\ub294 \uac15\ub825\ud55c \ub3c4\uad6c\uc785\ub2c8\ub2e4. \uc774 \uac00\uc774\ub4dc\ub97c \ub530\ub77c \ucc28\uadfc\ucc28\uc900 \uc9c4\ud589\ud55c\ub2e4\uba74 <strong>\uc6f9, \ub370\uc2a4\ud06c\ud1b1, \ubaa8\ubc14\uc77c \uc571<\/strong>\uae4c\uc9c0 \ubaa8\ub450 \uac1c\ubc1c\ud560 \uc218 \uc788\uc744 \uac81\ub2c8\ub2e4.<\/p>\n<p>\ud83d\ude80 <strong>\uc624\ub298 \uccab \ubc88\uc9f8 \ud504\ub85c\uc81d\ud2b8\ub97c \uc2dc\uc791\ud574\ubcf4\ub294 \uac74 \uc5b4\ub5a8\uae4c\uc694?<\/strong><br \/>\n\ud83d\udc49 <strong><a href=\"https:\/\/docs.python.org\/3\/\" target=\"_blank\" rel=\"noopener\">\ud30c\uc774\uc36c \uacf5\uc2dd \ubb38\uc11c<\/a><\/strong>\uc5d0\uc11c \ub354 \ub9ce\uc740 \uc815\ubcf4\ub97c \ud655\uc778\ud558\uc138\uc694!<\/p>\n<p>\uc774 \uae00\uc774 \ub3c4\uc6c0\uc774 \ub418\uc5c8\ub2e4\uba74 <strong>\uacf5\uc720 &amp; \ub313\uae00<\/strong>\ub85c \ud53c\ub4dc\ubc31 \ubd80\ud0c1\ub4dc\ub9bd\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud30c\uc774\uc36c\uc740 \uac04\uacb0\ud55c \ubb38\ubc95\uacfc \uac15\ub825\ud55c \uc0dd\ud0dc\uacc4\ub85c \uc571 \uac1c\ubc1c\ubd80\ud130 \ubc30\ud3ec\uae4c\uc9c0 \ubaa8\ub4e0 \uacfc\uc815\uc744 \uc27d\uac8c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uc5b8\uc5b4\uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 \ud30c\uc774\uc36c\uc73c\ub85c \uc571\uc744 \ub9cc\ub4e4\uae30 \uc704\ud55c \ud544\uc218 \uc124\uce58 \ubc29\ubc95\uacfc \ud6a8\uc728\uc801\uc778 \ubc30\ud3ec \uc804\ub7b5\uc744 \ub2e8\uacc4\ubcc4\ub85c \uc815\ub9ac\ud588\uc2b5\ub2c8\ub2e4. \uac1c\ubc1c \ucd08\ubcf4\uc790\ubd80\ud130 \uc804\ubb38\uac00\uae4c\uc9c0 \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \uc2e4\uc6a9\uc801\uc778 \uc815\ubcf4\ub97c \ub2f4\uc558\uc73c\ub2c8, \ub05d\uae4c\uc9c0 \uc77d\uc5b4\ubcf4\uc138\uc694! 1. \ud30c\uc774\uc36c \uac1c\ubc1c \ud658\uacbd \uc124\uc815\ud558\uae30 (1) \ud30c\uc774\uc36c \uc124\uce58 \ud30c\uc774\uc36c \uc571 \uac1c\ubc1c\uc744 \uc2dc\uc791\ud558\ub824\uba74 \uba3c\uc800 \uacf5\uc2dd \ud30c\uc774\uc36c [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":26733,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[70],"tags":[],"class_list":["post-26732","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-ko"],"_links":{"self":[{"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/posts\/26732","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/comments?post=26732"}],"version-history":[{"count":1,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/posts\/26732\/revisions"}],"predecessor-version":[{"id":26737,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/posts\/26732\/revisions\/26737"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/media\/26733"}],"wp:attachment":[{"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/media?parent=26732"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/categories?post=26732"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/tags?post=26732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}