{"id":230,"date":"2026-05-15T05:40:31","date_gmt":"2026-05-14T21:40:31","guid":{"rendered":"https:\/\/junai.ai\/blog\/python-venv-16\/"},"modified":"2026-05-17T07:31:23","modified_gmt":"2026-05-16T23:31:23","slug":"python-venv-16","status":"publish","type":"post","link":"https:\/\/junai.ai\/blog\/python-venv-16\/","title":{"rendered":"\ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd venv \u2014 pip\u00b7requirements (16\ud3b8)"},"content":{"rendered":"\n<!-- WordPress REST API \ubc1c\ud589\uc6a9 HTML (\uc790\ub3d9 \uc0dd\uc131) -->\n<!-- WP-FEATURED-MEDIA-ID: 595 -->\n<div style=\"max-width:800px;margin:0 auto;\">\n<style>\n\/* js-textbook \u2014 PostgreSQL \uad50\uc7ac \ub3d9\uc77c \ud314\ub808\ud2b8 *\/\n:root {\n  --color-primary: #336791;\n  --color-accent: #60a5fa;\n  --color-bg: #fafafa;\n  --color-bg-card: #ffffff;\n  --color-text: #1e293b;\n  --color-text-muted: #64748b;\n  --hero-start: #0f172a;\n  --hero-end: #336791;\n  --font-body: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif;\n  --size-body: 17px;\n  --line-height: 1.75;\n}\n* { box-sizing: border-box; }\n.container { max-width: 760px; margin: 0 auto; padding: 0 22px 80px; }\n.hero { background: linear-gradient(135deg, var(--hero-start) 0%, var(--hero-end) 100%); color: #fff; padding: 72px 22px 56px; text-align: center; }\n.hero .badge { display: inline-block; background: rgba(96,165,250,0.18); color: var(--color-accent); padding: 6px 14px; border-radius: 999px; font-size: 13px; font-weight: 600; letter-spacing: 0.5px; margin-bottom: 18px; }\n.hero h1 { margin: 0 0 18px; font-size: 36px; line-height: 1.3; letter-spacing: -0.3px; }\n.hero p.sub { margin: 0 auto; max-width: 580px; font-size: 17px; color: #bfdbfe; }\n.hero img { width: 100%; max-width: 720px; height: auto; margin: 36px auto 0; display: block; border-radius: 10px; box-shadow: 0 8px 32px rgba(0,0,0,0.3); }\n.meta { display: flex; gap: 14px; justify-content: center; margin-top: 20px; font-size: 13px; color: #93c5fd; flex-wrap: wrap; }\n.meta span::before { content: \"\u00b7\"; margin-right: 14px; color: #1e3a8a; }\n.meta span:first-child::before { content: \"\"; margin: 0; }\narticle { background: var(--color-bg-card); margin-top: -36px; padding: 44px 28px; border-radius: 14px; box-shadow: 0 2px 18px rgba(0,0,0,0.06); }\narticle p { margin: 0 0 18px; }\nh2 { font-size: 28px; line-height: 1.35; letter-spacing: -0.3px; margin: 48px 0 18px; padding-bottom: 10px; border-bottom: 2px solid var(--color-primary); }\nh2:first-of-type { margin-top: 8px; }\nh3 { font-size: 21px; line-height: 1.4; margin: 30px 0 12px; color: var(--color-primary); }\ncode { background: #f1f5f9; color: #0f172a; padding: 2px 6px; border-radius: 4px; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-size: 0.92em; }\npre { background: #0f172a; color: #e2e8f0; padding: 18px 20px; border-radius: 10px; overflow-x: auto; font-size: 14.5px; line-height: 1.65; margin: 18px 0; }\npre code { background: transparent; color: inherit; padding: 0; }\nul, ol { margin: 0 0 18px; padding-left: 24px; }\nli { margin-bottom: 8px; }\nstrong { color: #0f172a; }\n.databox { background: #eff6ff; border-left: 4px solid var(--color-primary); padding: 18px 20px; border-radius: 6px; margin: 22px 0; }\n.databox p { margin: 0 0 8px; }\n.databox p:last-child { margin: 0; }\n.databox strong { color: var(--color-primary); }\n.warnbox { background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); border-left: 4px solid #d97706; padding: 18px 20px; border-radius: 6px; margin: 22px 0; }\n.warnbox strong { color: #92400e; }\n.tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 22px 0; }\ntable { width: 100%; border-collapse: collapse; font-size: 15px; background: var(--color-bg-card); }\nth, td { padding: 11px 12px; text-align: left; border-bottom: 1px solid #e2e8f0; vertical-align: top; }\nth { background: #f1f5f9; font-weight: 700; color: #0f172a; }\ntd:first-child, th:first-child { font-weight: 700; }\n.cta { background: linear-gradient(135deg, #336791 0%, #60a5fa 100%); color: #fff; padding: 30px 24px; border-radius: 12px; margin-top: 44px; text-align: center; }\n.cta h3 { color: #fff; margin: 0 0 10px; }\n.cta p { margin: 0; color: #dbeafe; }\n.series-nav { background: #eff6ff; padding: 18px 22px; border-radius: 10px; margin-top: 24px; font-size: 14.5px; color: var(--color-text-muted); }\n.series-nav strong { color: var(--color-primary); }\n@media (max-width: 480px) {\n  .hero { padding: 52px 18px 44px; }\n  .hero h1 { font-size: 26px; }\n  .hero p.sub { font-size: 15px; }\n  article { padding: 28px 18px; border-radius: 10px; }\n  h2 { font-size: 22px; }\n  h3 { font-size: 18px; }\npre { font-size: 13px; padding: 14px 16px; }\n}\n@media (max-width: 560px) {\n  .tablewrap table, .tablewrap thead, .tablewrap tbody, .tablewrap tr, .tablewrap th, .tablewrap td { display: block; width: auto; }\n  .tablewrap thead { display: none; }\n  .tablewrap tr { margin: 0 0 14px; border: 1px solid #e2e8f0; border-radius: 10px; overflow: hidden; }\n  .tablewrap td { border: none; border-bottom: 1px solid #f1f5f9; padding: 9px 14px; }\n  .tablewrap td:first-child { background: #eff6ff; font-weight: 800; font-size: 15.5px; }\n  .tablewrap td:last-child { border-bottom: none; }\n  .tablewrap td[data-label]::before { content: attr(data-label) \" \u2014 \"; font-weight: 700; color: var(--color-primary); }\n}\n<\/style>\n<header class=\"hero\">\n  <span class=\"badge\">\ud30c\uc774\uc36c \uad50\uc7ac \u00b7 16\ud3b8 \/ 27\ud3b8<\/span>\n  <h1>\ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd venv<\/h1>\n  <p class=\"sub\">\ud504\ub85c\uc81d\ud2b8\ub9c8\ub2e4 \ub3c5\ub9bd\ub41c \ud30c\uc774\uc36c\u00b7\ud328\ud0a4\uc9c0 \uacf5\uac04. \ucda9\ub3cc\uc774 \uc0ac\ub77c\uc9c4\ub2e4.<\/p>\n  <div class=\"meta\"><span>\uae30\ucd08<\/span><span>\uc77d\ub294 \uc2dc\uac04 6\ubd84<\/span><span>2026-05-13<\/span><\/div>\n  <img decoding=\"async\" src=\"https:\/\/junai.ai\/blog\/wp-content\/uploads\/2026\/05\/hero-214.jpg\" alt=\"venv \ub9cc\ub4e4\uae30, activate, pip install, requirements.txt \uba85\ub839 \ud654\uba74\">\n<\/header>\n\n<div class=\"container\">\n<article>\n\n<p>11\ud3b8\uc5d0\uc11c <code>pip install requests<\/code> \ub97c \uc2dc\uc2a4\ud15c \ud30c\uc774\uc36c\uc5d0 \uc9c1\uc811 \uae54\uc9c0 \ub9d0\ub77c\uace0 \uacbd\uace0\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc720\ub294 \ub2e8\uc21c \u2014 <strong>\ud504\ub85c\uc81d\ud2b8\ub9c8\ub2e4 \ub2e4\ub978 \ubc84\uc804\uc774 \ud544\uc694<\/strong>\ud574\uc11c\uc694. A \ud504\ub85c\uc81d\ud2b8\ub294 requests 2.28, B \ud504\ub85c\uc81d\ud2b8\ub294 2.31, C \ud504\ub85c\uc81d\ud2b8\ub294 \ud328\uce58\ub41c \ud3ec\ud06c. \uac19\uc740 \uc2dc\uc2a4\ud15c\uc5d0 \ud55c \ubc84\uc804\ub9cc \uae54\ub9ac\uba74 \uc5b4\ub290 \ud55c\ucabd\uc774 \uae68\uc9d1\ub2c8\ub2e4. \ud68c\uc0ac \uc2e0\uc785\uc758 \ud55c \uc8fc \uc7a1\uc77c 1\ubc88 \uc0ac\uace0\uac00 \uc774\uac70. 1\ud3b8\uc758 Anaconda \uacbd\uace0\uc640 \uac19\uc740 \ub9e5\ub77d.<\/p>\n\n<p>\ud574\ubc95\uc740 <strong>\ud504\ub85c\uc81d\ud2b8\ub9c8\ub2e4 \ub3c5\ub9bd\ub41c \ud30c\uc774\uc36c \ud658\uacbd<\/strong>\uc744 \ub9cc\ub4dc\ub294 \uac83. \uadf8\uac8c \uac00\uc0c1\ud658\uacbd(venv). 16\ud3b8\uc744 \ub9c8\uce58\uba74 \u2460 <code>python -m venv<\/code> \uc0dd\uc131 \u2461 <code>activate \/ deactivate<\/code> \u2462 <code>pip install<\/code> \uacfc <code>requirements.txt<\/code> \u2463 VS Code \uc5f0\ub3d9 \u2464 \ub2e4\ub978 \ub3c4\uad6c(uv\u00b7poetry)\uc640\uc758 \uad00\uacc4 \u2014 5\uac00\uc9c0\ub97c \uc190\uc5d0 \uc775\ud799\ub2c8\ub2e4.<\/p>\n\n<h2>venv \ub9cc\ub4e4\uae30\uc640 \ucf1c\uae30<\/h2>\n\n<pre><code># \ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354\uc5d0\uc11c\ncd ~\/projects\/myapp\n\n# 1) \uac00\uc0c1\ud658\uacbd \ud3f4\ub354 .venv \uc0dd\uc131 (1\ucd08)\npython3 -m venv .venv\n\n# 2) \ud65c\uc131\ud654\n# \ub9e5\/\ub9ac\ub205\uc2a4\nsource .venv\/bin\/activate\n# \uc708\ub3c4\uc6b0 PowerShell\n.venv\\Scripts\\Activate.ps1\n# \uc708\ub3c4\uc6b0 cmd\n.venv\\Scripts\\activate.bat\n\n# \ud504\ub86c\ud504\ud2b8\uac00 (.venv) \ub85c \uc2dc\uc791\ud558\uba74 \uc131\uacf5\n(.venv) $ which python      # \/home\/user\/projects\/myapp\/.venv\/bin\/python\n(.venv) $ python --version  # Python 3.12.x<\/code><\/pre>\n\n<p>\ud65c\uc131\ud654 \uc0c1\ud0dc\uc5d0\uc11c\ub294 <code>python<\/code>\u00b7<code>pip<\/code> \uba85\ub839\uc774 <strong>\uc774 \uac00\uc0c1\ud658\uacbd \uc548\uc758 \uac83<\/strong>\uc744 \uc4f0\uac8c PATH \uac00 \ubc14\ub01d\ub2c8\ub2e4. \uadf8\ub798\uc11c \uae54\uac70\ub098 \ubd80\ub974\ub294 \ubaa8\ub4e0 \uac8c \uc774 \ud3f4\ub354 \uc548\uc5d0\uc11c\ub9cc \uc77c\uc5b4\ub098\uc694.<\/p>\n\n<div class=\"databox\">\n  <p><strong>\ud83d\udccc .venv \uac00 \ud45c\uc900 \uc774\ub984<\/strong><\/p>\n  <p>\ub2e4\ub978 \uc774\ub984(venv\u00b7env)\ub3c4 \uac00\ub2a5\ud558\uc9c0\ub9cc <code>.venv<\/code> \uac00 PEP 8 + \ud604\ub300 \ub3c4\uad6c \ud45c\uc900. \uc810 prefix \ub77c \uc790\ub3d9\uc73c\ub85c \uc228\uae40 \ucc98\ub9ac\ub418\uace0, .gitignore \uc5d0 <code>.venv\/<\/code> \ud55c \uc904\ub85c \uc81c\uc678\ub429\ub2c8\ub2e4. \uae43\uc5d0 \uc62c\ub9ac\uc9c0 \ub9c8\uc138\uc694 \u2014 \ud658\uacbd\uc740 <code>requirements.txt<\/code> \ub85c\ub9cc \uacf5\uc720.<\/p>\n<\/div>\n\n<h2>pip \uc124\uce58\uc640 requirements.txt<\/h2>\n\n<pre><code>(.venv) $ pip install requests pandas\n(.venv) $ pip list                 # \uae54\ub9b0 \ud328\ud0a4\uc9c0 \ubaa9\ub85d\n(.venv) $ pip show requests        # \ubc84\uc804\u00b7\uc704\uce58 \uc0c1\uc138\n\n# \ud604\uc7ac \uc0c1\ud0dc\ub97c \ud30c\uc77c\ub85c \u2014 \ud611\uc5c5\u00b7\uc7ac\ud604\uc6a9\n(.venv) $ pip freeze &gt; requirements.txt\n# requirements.txt \ub0b4\uc6a9 \uc608:\n#   pandas==2.2.2\n#   requests==2.31.0\n#   numpy==1.26.4\n\n# \ub3d9\ub8cc\uac00 \uac19\uc740 \ud658\uacbd\uc744 \ub9cc\ub4e4 \ub54c\n$ git clone ...\n$ cd repo\n$ python3 -m venv .venv\n$ source .venv\/bin\/activate\n(.venv) $ pip install -r requirements.txt<\/code><\/pre>\n\n<p><code>requirements.txt<\/code> \uac00 <strong>&#8220;\uc774 \ud504\ub85c\uc81d\ud2b8\ub294 \uc774 \ud328\ud0a4\uc9c0\u00b7\ubc84\uc804\uc744 \uc4f4\ub2e4&#8221;<\/strong> \uc758 \ub2e8\uc77c \uc9c4\uc2e4\uc6d0\uc785\ub2c8\ub2e4. \uae43\uc5d0 \ucee4\ubc0b\ud574 \ud611\uc5c5\ud558\uace0, \uc0c8 \uba38\uc2e0\uc5d0\uc11c \ud55c \uc904\ub85c \uc7ac\ud604. 27\ud3b8 \ub05d\uc5d0\uc11c \ubcf8\uc778 \uccab \ud504\ub85c\uc81d\ud2b8\ub97c \ub9cc\ub4e4 \ub54c \uac00\uc7a5 \uba3c\uc800 \uc801\uc744 \ud30c\uc77c.<\/p>\n\n<h3>\ube44\ud65c\uc131\ud654 \u2014 \uc77c \ub05d\ub098\uba74 \ub044\uae30<\/h3>\n\n<pre><code>(.venv) $ deactivate\n$  \u2190 \ud504\ub86c\ud504\ud2b8\uac00 \uc6d0\ub798\ub300\ub85c, \uc2dc\uc2a4\ud15c \ud30c\uc774\uc36c\uc73c\ub85c \ubcf5\uadc0<\/code><\/pre>\n\n<p>\ub610\ub294 \uadf8\ub0e5 \ud130\ubbf8\ub110\uc744 \ub2eb\uc544\ub3c4 \ub429\ub2c8\ub2e4. \uac00\uc0c1\ud658\uacbd\uc740 <strong>\ud604\uc7ac \uc178 \uc138\uc158<\/strong>\uc5d0\ub9cc \uc720\ud6a8\ud574\uc694. \uc0c8 \ucc3d\uc744 \uc5f4\uba74 \ub2e4\uc2dc <code>source<\/code> \ub85c \ud65c\uc131\ud654 \ud544\uc694.<\/p>\n\n<h2>VS Code \uc5f0\ub3d9\uacfc .env \ud30c\uc77c<\/h2>\n\n<p>VS Code \uc5d0\uc11c \ud30c\uc774\uc36c \ud30c\uc77c\uc744 \uc5f4\uba74 \uc6b0\ud558\ub2e8\uc5d0 <strong>\uc778\ud130\ud504\ub9ac\ud130 \uc120\ud0dd<\/strong>\uc774 \ubcf4\uc785\ub2c8\ub2e4. \ud074\ub9ad\ud574 <code>.venv\/bin\/python<\/code> \uc744 \uc120\ud0dd\ud558\uba74 \uadf8\ub54c\ubd80\ud130 \uadf8 \ud30c\uc77c\u00b7\ud130\ubbf8\ub110 \ubaa8\ub450 \uac00\uc0c1\ud658\uacbd\uc744 \uc790\ub3d9 \ud65c\uc131\ud654. \ub9e4\ubc88 source \uc548 \ud574\ub3c4 \ub429\ub2c8\ub2e4.<\/p>\n\n<pre><code># \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\uc758 .vscode\/settings.json\n{\n  \"python.defaultInterpreterPath\": \"${workspaceFolder}\/.venv\/bin\/python\",\n  \"python.terminal.activateEnvironment\": true\n}<\/code><\/pre>\n\n<p>\uc774 \ub450 \uc904\uc744 \uae43\uc5d0 \uac19\uc774 \ucee4\ubc0b\ud558\uba74 \ub3d9\ub8cc\uac00 \ud3f4\ub354\ub97c \uc5f4 \ub54c \uc790\ub3d9\uc73c\ub85c .venv \ub97c \uc778\uc2dd.<\/p>\n\n<div class=\"warnbox\">\n  <strong>\u26a0\ufe0f \uac00\uc0c1\ud658\uacbd \uc548\uc5d0\uc11c sudo pip install \uae08\uc9c0.<\/strong> <code>sudo<\/code> \ub294 \uc2dc\uc2a4\ud15c \ud30c\uc774\uc36c\uc5d0 \uad8c\ud55c \uc0c1\uc2b9\ud574 \uae54\uac8c \ub429\ub2c8\ub2e4 \u2014 \uac00\uc0c1\ud658\uacbd\uc744 \uc6b0\ud68c\ud574\ubc84\ub824\uc694. <code>(.venv)<\/code> \ud504\ub86c\ud504\ud2b8\uac00 \ubcf4\uc774\uba74 \uadf8\ub0e5 <code>pip install<\/code> \ub9cc. \uad8c\ud55c \uc624\ub958\uac00 \ub098\uba74 venv \uac00 \uc81c\ub300\ub85c \ud65c\uc131\ud654 \uc548 \ub41c \uc2e0\ud638\ub2c8\uae4c source \ubd80\ud130 \ub2e4\uc2dc.\n<\/div>\n\n<h2>uv\u00b7poetry \u2014 \ucc28\uc138\ub300 \ub3c4\uad6c<\/h2>\n\n<p>2024-2026 \ub144 \uc0ac\uc774 venv + pip \ubcf4\ub2e4 \ube60\ub978 \ub3c4\uad6c\uac00 \uc778\uae30\ub97c \ub04c\uace0 \uc788\uc2b5\ub2c8\ub2e4. <strong>uv<\/strong>(Rust \ub85c \uc9e0 \ucd08\uace0\uc18d \ud328\ud0a4\uc9c0 \uad00\ub9ac, Astral \uc0ac) \ub294 pip \ub300\ube44 10-100\ubc30 \ube60\ub974\uace0, <strong>poetry<\/strong> \ub294 <code>pyproject.toml<\/code> \uae30\ubc18 \uc758\uc874\uc131 \uad00\ub9ac + \ube4c\ub4dc\ub97c \ud569\uce69\ub2c8\ub2e4.<\/p>\n\n<pre><code># uv \u2014 \ube60\ub978 venv + pip \ub300\uccb4\n$ uv venv                          # .venv \uc0dd\uc131 (0.1\ucd08)\n$ uv pip install requests          # \uac19\uc740 \uc778\ud130\ud398\uc774\uc2a4, \ud6e8\uc52c \ube60\ub984\n$ uv pip install -r requirements.txt\n\n# poetry \u2014 \ud504\ub85c\uc81d\ud2b8 \ub2e8\uc704 \uad00\ub9ac\n$ poetry new myapp\n$ cd myapp\n$ poetry add requests\n$ poetry run python myapp.py<\/code><\/pre>\n\n<p>\uc785\ubb38\uc790\ub294 venv + pip \ubd80\ud130 \uc190\uc5d0 \uc775\ud78c \ub4a4 \ub3c4\uad6c\ub97c \ubc14\uafb8\uc138\uc694. <strong>venv \uac00 \ud45c\uc900\uc774\uace0 \ubaa8\ub4e0 \ud658\uacbd\uc5d0 \uae30\ubcf8 \uc81c\uacf5<\/strong>\ub418\ub2c8\uae4c \uc5b4\ub514 \uac00\uc11c\ub3c4 \ub3d9\uc791. uv\u00b7poetry \ub294 \ud559\uc2b5\ud560 \ub9cc\ud55c \uc2dc\uc810\uc774 \uc624\uba74 \uc77c\uc8fc\uc77c\uc774\uba74 \uc775\ud600\uc694.<\/p>\n\n<h2>\ub9c8\ubb34\ub9ac \u2014 \uac00\uc0c1\ud658\uacbd\uc740 \uc2b5\uad00\uc774\ub2e4<\/h2>\n\n<p>\uc0c8 \ud504\ub85c\uc81d\ud2b8 \uc2dc\uc791 = \uc0c8 \ud3f4\ub354 + <code>python -m venv .venv<\/code> + <code>activate<\/code>. \uc774\uac8c \uc2b5\uad00\uc774 \ub418\uba74 \ud328\ud0a4\uc9c0 \ucda9\ub3cc\u00b7\ubc84\uc804 \uc0ac\uace0\uac00 \uac70\uc758 \uc0ac\ub77c\uc9d1\ub2c8\ub2e4. <strong>\ud55c \uac00\uc0c1\ud658\uacbd\uc5d0 \ud55c \ud504\ub85c\uc81d\ud2b8<\/strong> \uac00 \uad8c\uc7a5 \u2014 \uc5ec\ub7ec \ud504\ub85c\uc81d\ud2b8\uac00 \ud55c \ud658\uacbd\uc744 \uacf5\uc720\ud558\uc9c0 \uc54a\uac8c.<\/p>\n\n<p>\ub2e4\uc74c \ubbf8\uc158 \u2014 \uc178\uc5d0\uc11c: \u2460 \uc0c8 \ud3f4\ub354\uc5d0\uc11c venv \ub9cc\ub4e4\uace0 <code>requests<\/code> \uc124\uce58 \u2461 <code>requests.get(\"https:\/\/httpbin.org\/ip\")<\/code> \uac00 \ub3d9\uc791\ud558\ub294 \uc2a4\ud06c\ub9bd\ud2b8 \u2462 <code>pip freeze<\/code> \ub85c requirements.txt \ub9cc\ub4e4\uae30.<\/p>\n\n<div class=\"cta\">\n  <h3>\ub2e4\uc74c \ud3b8 \ubbf8\ub9ac\ubcf4\uae30<\/h3>\n  <p>17\ud3b8 \u2014 &#8220;\ud30c\uc774\uc36c \ub370\ucf54\ub808\uc774\ud130&#8221;: \ud568\uc218\ub97c \uac10\uc2f8\ub294 \ud568\uc218. <code>@functools.lru_cache<\/code>\u00b7<code>@dataclass<\/code> \uac19\uc740 \ub370\ucf54\ub808\uc774\ud130\uac00 \uc5b4\ub5bb\uac8c \ub3d9\uc791\ud558\ub294\uc9c0.<\/p>\n<\/div>\n\n<div class=\"series-nav\">\n  <strong>\ud83d\udcda 27\ud3b8 \ud30c\uc774\uc36c \uad50\uc7ac \uc2dc\ub9ac\uc988 \u2014 16\/27\ud3b8<\/strong><br>\n  \u2190 15\ud3b8 &#8220;\uc0c1\uc18d\u00b7super&#8221; \u00b7 \ub2e4\uc74c: 17\ud3b8 &#8220;\ub370\ucf54\ub808\uc774\ud130&#8221;\n<\/div>\n\n<\/article>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>venv\u00b7activate\u00b7pip\u00b7requirements.txt\u00b7VS Code\u00b7uv \uae4c\uc9c0. 27\ud3b8 \uad50\uc7ac 16\ud3b8.<\/p>\n","protected":false},"author":1,"featured_media":595,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-230","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/comments?post=230"}],"version-history":[{"count":2,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions"}],"predecessor-version":[{"id":622,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions\/622"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media\/595"}],"wp:attachment":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media?parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/categories?post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/tags?post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}