{"id":5843,"date":"2025-12-28T08:36:00","date_gmt":"2025-12-27T23:36:00","guid":{"rendered":"https:\/\/secondlife.lol\/?p=5843"},"modified":"2025-12-28T15:22:54","modified_gmt":"2025-12-28T06:22:54","slug":"%ed%8c%8c%ec%9d%b4%ec%8d%ac-%ea%b0%80%ec%83%81%ed%99%98%ea%b2%bd-using-venv","status":"publish","type":"post","link":"https:\/\/secondlife.lol\/zh\/%ed%8c%8c%ec%9d%b4%ec%8d%ac-%ea%b0%80%ec%83%81%ed%99%98%ea%b2%bd-using-venv\/","title":{"rendered":"\ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd \uc124\uc815 \ubc88\uc6781\ud3b8. venv\ub9cc\uc73c\ub85c \ub05d\ub0b4\ub294 \u201c\ucd5c\uc18c \ub8e8\ud2f4&#8221;"},"content":{"rendered":"<style>.kb-image5843_16340e-ba .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image5843_16340e-ba\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"512\" height=\"304\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-64.png\" alt=\"\ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd \uc124\uc815 \ubc88\uc678 \ud3ec\uc2a4\ud2b8 \uc378\ub124\uc77c\" class=\"kb-img wp-image-5844\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-64.png 512w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-64-300x178.png 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-64-18x12.png 18w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure><\/div>\n\n\n\n<p>\ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd\uc744 \uc124\uba85\ud560 \ub54c \ub3c4\uad6c\uac00 \ub108\ubb34 \ub9ce\uc774 \ub4f1\uc7a5\ud558\uba74 \ucd08\ubcf4\uc790\ub294 \uc624\ud788\ub824 \ub9c9\ub9c9\ud574\uc9c0\uc8e0.<br><a href=\"https:\/\/virtualenv.pypa.io\/\" target=\"_blank\" rel=\"noopener\">virtualenv<\/a>, <a href=\"https:\/\/anaconda.org\/anaconda\/conda\" target=\"_blank\" rel=\"noopener\">conda<\/a>, <a href=\"https:\/\/python-poetry.org\/\" target=\"_blank\" rel=\"noopener\">poetry<\/a>, <a href=\"https:\/\/pipenv.pypa.io\/\" target=\"_blank\" rel=\"noopener\">pipenv<\/a>\u2026 \uc774\ub984\ub9cc \ub4e4\uc5b4\ub3c4 \uc228\uc774 \ucc28\uc8e0.<\/p>\n\n\n\n<p>\uadf8\ub7f0\ub370 \uc7ac\ubbf8\uc788\ub294 \uc0ac\uc2e4\uc774 \uc788\uc5b4\uc694.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\ub300\ubd80\ubd84\uc758 \ud300\/\ud504\ub85c\uc81d\ud2b8\ub294 <strong>\ud45c\uc900 venv \ud558\ub098\ub9cc\uc73c\ub85c\ub3c4<\/strong> \ucda9\ubd84\ud788 \uc548\uc815\uc801\uc73c\ub85c \uad74\ub7ec\uac11\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n\n\n\n<p>\uc65c\ub0d0\ud558\uba74 \uc6b0\ub9ac\uac00 \uc9c4\uc9dc\ub85c \ud544\uc694\ud55c \uac74 \ub531 \ub124 \uac00\uc9c0\ub2c8\uae4c\uc694.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\ud504\ub85c\uc81d\ud2b8\ubcc4\ub85c \ud328\ud0a4\uc9c0 \uacf5\uac04 \ubd84\ub9ac<\/li>\n\n\n\n<li>\uc124\uce58\ud55c \ud328\ud0a4\uc9c0 \ubaa9\ub85d\uc744 \ud30c\uc77c\ub85c \ub0a8\uae30\uae30(requirements)<\/li>\n\n\n\n<li>\ub2e4\ub978 PC\uc5d0\uc11c \uadf8\ub300\ub85c \uc7ac\ud604\ud558\uae30<\/li>\n\n\n\n<li>\uc774 \ud750\ub984\uc774 \u201c\ub108\ubb34 \uc5b4\ub835\uc9c0 \uc54a\uc744 \uac83\u201d<\/li>\n<\/ol>\n\n\n\n<p>venv\ub294 \uc774 4\uac00\uc9c0\ub97c \u201c\ud30c\uc774\uc36c \uae30\ubcf8 \uae30\ub2a5\ub9cc\uc73c\ub85c\u201d \ud574\uacb0\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{color:var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{color:var(--global-palette2, #2B6CB0);font-size:28px;font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);line-height:2em;font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette6, #718096);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}<\/style>\n\n\n<h3 class=\"wp-block-heading\">\uc624\ub298\uc758 \ud070 \uadf8\ub9bc(venv \uc0ac\uc6a9\ubc95 \uc694\uc57d)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac00\uc0c1\ud658\uacbd \ub9cc\ub4e4\uae30 \u2192 \ud65c\uc131\ud654 \u2192 \uc124\uce58 \u2192 \uae30\ub85d(requirements) \u2192 \ub2e4\ub978 \uacf3\uc5d0\uc11c \uc7ac\ud604<\/li>\n<\/ul>\n\n\n\n<p>\uc774 \ud55c \uc904 \ud750\ub984\uc774 \uba38\ub9ac\uc5d0 \ub4e4\uc5b4\uc624\uba74, \ud30c\uc774\uc36c \ud658\uacbd \uc124\uc815\uc740 \uc0ac\uc2e4\uc0c1 \ub05d\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1) Mac: venv \uc0ac\uc6a9\ubc95<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1. \ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354 \ub9cc\ub4e4\uace0 \ub4e4\uc5b4\uac00\uae30<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir myproj\ncd myproj<\/code><\/pre>\n\n\n\n<p>\uc5ec\uae30\uc11c \uc911\uc694\ud55c \uac74 \u201c\ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354 \uc548\uc5d0\uc11c\u201d \uac00\uc0c1\ud658\uacbd\uc744 \ub9cc\ub4e0\ub2e4\ub294 \uc810\uc774\uc5d0\uc694.<br>\uadf8\ub798\uc57c \ub098\uc911\uc5d0 \ud3f4\ub354\ub9cc \ud1b5\uc9f8\ub85c \uc62e\uaca8\ub3c4 \uad6c\uc870\uac00 \uc790\uc5f0\uc2a4\ub7fd\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2. \uac00\uc0c1\ud658\uacbd \ub9cc\ub4e4\uae30(\ud3f4\ub354 \uc774\ub984\uc740 \ubcf4\ud1b5 <code>.venv<\/code>)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 -m venv .venv<\/code><\/pre>\n\n\n\n<p><code>.venv<\/code>\ub294 \uad00\ub840\ucc98\ub7fc \ub9ce\uc774 \uc4f0\ub294 \uc774\ub984\uc785\ub2c8\ub2e4.<br>\uc228\uae40 \ud3f4\ub354 \ub290\ub08c\ub3c4 \uc788\uace0(\uc810\uc73c\ub85c \uc2dc\uc791), \ud504\ub85c\uc81d\ud2b8\uc640 \ud568\uaed8 \ub2e4\ub2c8\uae30 \uc88b\uac70\ub4e0\uc694.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3. \uac00\uc0c1\ud658\uacbd \ud65c\uc131\ud654(\ub4e4\uc5b4\uac00\uae30)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>source .venv\/bin\/activate<\/code><\/pre>\n\n\n\n<p>\uc774\uc81c \ud504\ub86c\ud504\ud2b8\uc5d0 <code>(.venv)<\/code> \uac19\uc740 \ud45c\uc2dc\uac00 \ubd99\uc73c\uba74 \uc131\uacf5\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4. pip \uc5c5\uadf8\ub808\uc774\ub4dc(\uac00\uc0c1\ud658\uacbd \uc548\uc5d0\uc11c)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>python -m pip install --upgrade pip<\/code><\/pre>\n\n\n\n<p><strong>\uac00\uc0c1\ud658\uacbd \uc548\uc73c\ub85c \uc9c4\uc785\ud55c \uc0c1\ud0dc\uc5d0\uc11c\ub294 <code>python<\/code>\uacfc <code>pip<\/code>\ub97c \uc368\ub3c4 \uc0c1\uad00\uc5c6\uc5b4\uc694.<\/strong><br>\uac00\uc0c1\ud658\uacbd\uc774 <a href=\"https:\/\/secondlife.lol\/python-venv-second-path-which-python3\/\">PATH<\/a> \ub9e8 \uc55e\uc5d0 \uc790\uae30 \uc790\uc2e0\uc744 \uc62c\ub824\uc8fc\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4(<a href=\"https:\/\/secondlife.lol\/python-venv-create-activate\/\">6\ud3b8<\/a>\uc5d0\uc11c \ub9d0\ud55c \u201c\uc791\uc740 \uc6b0\uc8fc\u201d \ucee8\uc149\uc774 \uc5ec\uae30\uc11c \uccb4\uac10\ub429\ub2c8\ub2e4).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5. \ud328\ud0a4\uc9c0 \uc124\uce58(\uc608\uc2dc)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install numpy==1.20.1\npip list<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6. \ud658\uacbd \uc2a4\ub0c5\uc0f7 \ub9cc\ub4e4\uae30(requirements.txt)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip freeze &gt; requirements.txt\ncat requirements.txt<\/code><\/pre>\n\n\n\n<p>\uc774 \ud30c\uc77c\uc774 \ubc14\ub85c \u201c\ub0b4 \uac1c\ubc1c \ud658\uacbd\uc758 \ub808\uc2dc\ud53c\u201d\uc785\ub2c8\ub2e4.<br>\uc694\ub9ac\ub97c \ub2e4\uc2dc \ub9cc\ub4e4 \ub54c \ub808\uc2dc\ud53c\uac00 \uc788\uc73c\uba74 \uc7ac\ud604\uc774 \ub418\ub4ef, \ud30c\uc774\uc36c\ub3c4 \ub611\uac19\uc544\uc694.<\/p>\n\n\n<style>.kb-image5843_bba535-b6 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image5843_bba535-b6\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"512\" height=\"344\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-65.png\" alt=\"requirements.txt \uc2a4\ub0c5\uc0f5 \uc774\ubbf8\uc9c0\" class=\"kb-img wp-image-5846\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-65.png 512w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-65-300x202.png 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-65-18x12.png 18w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7. \ube44\ud65c\uc131\ud654(\ub098\uc624\uae30)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>deactivate<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2) Windows: venv \uc0ac\uc6a9\ubc95 (PowerShell \uae30\uc900)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1. \ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354 \ub9cc\ub4e4\uace0 \uc774\ub3d9<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir myproj\ncd myproj<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2. \uac00\uc0c1\ud658\uacbd \uc0dd\uc131<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>py -m venv .venv<\/code><\/pre>\n\n\n\n<p>Windows\ub294 <code>python3<\/code> \ub300\uc2e0 <code>py<\/code>\ub97c \uc4f0\ub294 \uac8c \uae54\ub054\ud55c \uacbd\uc6b0\uac00 \ub9ce\uc558\uc8e0(<a href=\"https:\/\/secondlife.lol\/python-venv-second-path-which-python3\/\">2\ud3b8<\/a>\/<a href=\"https:\/\/secondlife.lol\/%ed%8c%8c%ec%9d%b4%ec%8d%ac-%eb%b2%84%ec%a0%84-%ec%9d%bd%eb%8a%94-%eb%b2%95-pep-whats-new-%ea%b0%80%ec%83%81%ed%99%98%ea%b2%bd-%ec%84%a4%ec%a0%95-5%ed%8e%b8\/\">5\ud3b8<\/a> \ud750\ub984).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3. \ud65c\uc131\ud654(\ub4e4\uc5b4\uac00\uae30)<\/h3>\n\n\n\n<p>PowerShell:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\\.venv\\Scripts\\Activate.ps1<\/code><\/pre>\n\n\n\n<p>CMD:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\\.venv\\Scripts\\activate.bat<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>PowerShell\uc5d0\uc11c \uc2e4\ud589 \uc815\ucc45 \ub54c\ubb38\uc5d0 \ub9c9\ud788\uba74<br>\u201c\ud604\uc7ac \uc0ac\uc6a9\uc790 \ubc94\uc704\uc5d0\uc11c \uc2a4\ud06c\ub9bd\ud2b8 \ud5c8\uc6a9\u201d\uc73c\ub85c \ud574\uacb0\ub418\ub294 \uacbd\uc6b0\uac00 \ub9ce\uc2b5\ub2c8\ub2e4.<br>\ub2e4\ub9cc \ud68c\uc0ac\/\uae30\uad00 PC\ub294 \uc815\ucc45\uc774 \ub2e4\ub97c \uc218 \uc788\uc73c\ub2c8 \ubcf4\uc548 \uaddc\uc815\uc774 \uc788\ub2e4\uba74 \uadf8 \uaddc\uc815 \uc6b0\uc120!<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4. pip \uc5c5\uadf8\ub808\uc774\ub4dc<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>py -m pip install --upgrade pip<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5. \ud328\ud0a4\uc9c0 \uc124\uce58(\uc608\uc2dc)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install numpy==1.20.1\npip list\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6. requirements.txt \ub9cc\ub4e4\uae30<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip freeze &gt; requirements.txt\ntype requirements.txt<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7. \ube44\ud65c\uc131\ud654<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>deactivate<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3) \u201c\uc7ac\ud604\u201d\uc774 \ub418\ub294\uc9c0 \uc9c1\uc811 \uc2e4\ud5d8\ud574\ubcf4\uae30<\/h2>\n\n\n\n<p>\ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd\uc758 \uc9c4\uc9dc \uac00\uce58\ub294 \u201c\ub0b4 PC\uc5d0\uc11c \ub418\ub294 \uac83\u201d\uc774 \uc544\ub2c8\ub77c <strong>\ub2e4\ub978 PC\uc5d0\uc11c\ub3c4 \uadf8\ub300\ub85c \ub418\ub294 \uac83<\/strong>\uc774\uc5d0\uc694.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc2e4\ud5d8: \uc0c8 \ud3f4\ub354\uc5d0\uc11c \ub808\uc2dc\ud53c(requirements)\ub85c \ub2e4\uc2dc \ub9cc\ub4e4\uae30<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Mac<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir myproj_copy # \ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354 \uc0dd\uc131\ncd myproj_copy # \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\ud3f4\ub354\ub85c \uc774\ub3d9\npython3 -m venv .venv # venv \uc0ac\uc6a9\ubc95\uc744 \ud1b5\ud574 \uac00\uc0c1\ud658\uacbd(.venv) \uc0dd\uc131\nsource .venv\/bin\/activate # \ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd \ud65c\uc131\ud654 \ud558\uae30\npip install -r ..\/myproj\/requirements.txt # \uae30\uc874 \ud504\ub85c\uc81d\ud2b8(myproj) \ud3f4\ub354\uc758 \ub9ac\ucf70\uc774\uc5b4\uba3c\ud2b8\ub85c \ud328\ud0a4\uc9c0 \uc124\uce58\npip list # \uc124\uce58\ub41c \ud328\ud0a4\uc9c0 \ud655\uc778\ud558\uae30<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Windows(PowerShell)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir myproj_copy\ncd myproj_copy\npy -m venv .venv\n.\\.venv\\Scripts\\Activate.ps1\npip install -r ..\\myproj\\requirements.txt\npip list<\/code><\/pre>\n\n\n\n<p>\uc774 \uc2e4\ud5d8\uc744 \ud55c \ubc88\ub9cc \ud574\ub3c4 \uba38\ub9bf\uc18d\uc5d0 \uc774\ub7f0 \uac10\uac01\uc774 \uc0dd\uae41\ub2c8\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201c\ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd \uc124\uc815\uc774\ub780, \uacb0\uad6d <strong>\ud658\uacbd\uc744 \u2018\ud30c\uc77c\ub85c\u2019 \ub9cc\ub4e4\uace0 \uadf8 \ud658\uacbd\uc744 \uc7ac\ud604\ud558\ub294 \uae30\uc220<\/strong>\uc774\uad6c\ub098.\u201d<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">4) \ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd \ud65c\uc6a9 \ucd08\ubcf4\uc790 \ud568\uc815 3\uac1c<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud568\uc815 1) \uac00\uc0c1\ud658\uacbd\uc744 \ucf1c\uc9c0 \uc54a\uace0 pip \uc124\uce58\ud588\ub2e4.<\/h3>\n\n\n\n<p>\ud574\uacb0: \u201c\ud504\ub86c\ud504\ud2b8\uc5d0 <code>(.venv)<\/code> \ud45c\uc2dc\uac00 \uc788\ub098?\u201d\ub97c \uba3c\uc800 \ubd05\ub2c8\ub2e4.<br>\uc5c6\uc73c\uba74 \ud65c\uc131\ud654\ubd80\ud130 \ud558\ub294\uac78 \uc78a\uc9c0 \ub9c8\uc138\uc694!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud568\uc815 2) requirements.txt \ud30c\uc77c\uc774 \uc5c6\ub294\ub370 \uacf5\uc720\ud558\ub824\uace0 \ud55c\ub2e4.<\/h3>\n\n\n\n<p>\ud574\uacb0: \ud56d\uc0c1 \uc774 \uc2b5\uad00\uc744 \u201c\ub9c8\uc9c0\ub9c9\uc5d0\u201d \ub123\uc73c\uc138\uc694.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip freeze &gt; requirements.txt<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ud568\uc815 3) <code>.venv<\/code> \ud3f4\ub354\ub97c Git\uc5d0 \uc62c\ub838\ub2e4<\/h3>\n\n\n\n<p>\ud574\uacb0: \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 <code>.venv<\/code>\ub294 \uc62c\ub9ac\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<br>\ud658\uacbd\uc740 \ub808\uc2dc\ud53c(requirements.txt)\ub85c \uacf5\uc720\ud558\uace0, \uac00\uc0c1\ud658\uacbd \ud3f4\ub354\ub294 \uac01\uc790 \ub9cc\ub4e4\uac8c \ud558\ub294 \uac8c \uc77c\ubc18\uc801\uc774\uc5d0\uc694.<\/p>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading5843_8dc0ef-0a, .wp-block-kadence-advancedheading.kt-adv-heading5843_8dc0ef-0a[data-kb-block=\"kb-adv-heading5843_8dc0ef-0a\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading5843_8dc0ef-0a mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading5843_8dc0ef-0a[data-kb-block=\"kb-adv-heading5843_8dc0ef-0a\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading5843_8dc0ef-0a img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading5843_8dc0ef-0a[data-kb-block=\"kb-adv-heading5843_8dc0ef-0a\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h2 class=\"kt-adv-heading5843_8dc0ef-0a wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading5843_8dc0ef-0a\">\ucc38\uace0. python venv VS virtualevn<\/h2>\n\n\n<style>.kb-image5843_4d6d50-98 .kb-image-has-overlay:after{opacity:0.3;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;}.kb-image5843_4d6d50-98 img.kb-img, .kb-image5843_4d6d50-98 .kb-img img{border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}<\/style>\n<div class=\"wp-block-kadence-image kb-image5843_4d6d50-98\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"295\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-66-1-600x295.jpg\" alt=\"python venv VS virtualevn \uc774\ubbf8\uc9c0\" class=\"kb-img wp-image-5849\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-66-1-600x295.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-66-1-300x148.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-66-1-768x378.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-66-1-18x9.jpg 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-66-1.jpg 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<p><strong>venv<\/strong>\ub294 Python 3.3\ubd80\ud130&nbsp;<strong>\ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ub0b4\uc7a5<\/strong>\ub41c \uac00\uc0c1\ud658\uacbd \ub3c4\uad6c\uc785\ub2c8\ub2e4. \ubcc4\ub3c4 \uc124\uce58 \uc5c6\uc774&nbsp;<code>python3 -m venv myenv<\/code>\ub9cc \uce58\uba74 \ubc14\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc5b4 \ucd08\ubcf4\uc790\ub098 \ud45c\uc900 \ud658\uacbd\uc5d0\uc11c \uac00\uc7a5 \ud3b8\ub9ac\ud569\ub2c8\ub2e4. \uac00\ubcbc\uc6b4 \uae30\ub2a5\uc5d0 \uc9d1\uc911\ud574\uc11c \ud504\ub85c\uc81d\ud2b8\ubcc4 \ud328\ud0a4\uc9c0 \uaca9\ub9ac, requirements.txt \uad00\ub9ac \uc815\ub3c4\ub9cc \uc9c0\uc6d0\ud558\uba70,&nbsp;<strong>Python \ubc84\uc804 \ubcc0\uacbd\uc774\ub098 \ubcf5\uc7a1\ud55c \uc635\uc158\uc740 \ubd88\uac00\ub2a5<\/strong>\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>virtualenv<\/strong>\ub294 pip install virtualenv \uba85\ub839\uc5b4\ub85c \uc124\uce58\ud574\uc57c \ud558\ub294 \uc678\ubd80 \ud328\ud0a4\uc9c0\ub85c, venv\ubcf4\ub2e4 10\ub144 \uc55e\uc11c \uac1c\ubc1c\ub41c \uc6d0\uc870 \uac00\uc0c1\ud658\uacbd \ub3c4\uad6c\uc785\ub2c8\ub2e4.&nbsp;<strong>\ub2e4\uc591\ud55c Python \ubc84\uc804 \uc9c0\uc815<\/strong>(<code>virtualenv -p python3.11 myenv<\/code>),&nbsp;<strong>\ud50c\ub7ab\ud3fc \ud638\ud658\uc131<\/strong>,&nbsp;<strong>\uc0dd\uc131 \uc18d\ub3c4<\/strong>\uac00 \ub354 \uc6b0\uc218\ud558\uace0 pip \uc5c5\uadf8\ub808\uc774\ub4dc \ub4f1 \ud655\uc7a5 \uae30\ub2a5\ub3c4 \ub9ce\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p>venv\uac00 virtualenv\uc758 \ud575\uc2ec\ub9cc \ub5bc\uc11c \ub9cc\ub4e0 &#8216;\uacbd\ub7c9 \ubc84\uc804&#8217;\uc774\ub77c \ubcfc \uc218 \uc788\uc5b4\uc694.<\/p>\n\n\n\n<p>\uc2e4\ubb34\uc801 \uad00\uc810\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uad6c\ubd84\ud574\uc11c \uc120\ud0dd\ud558\uc2dc\uba74 \ub420\uaebc\uc608\uc694.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc77c\ubc18 \ud504\ub85c\uc81d\ud2b8<\/strong>&nbsp;\u2192&nbsp;<code>venv<\/code>&nbsp;(\uc124\uce58 0, \ud45c\uc900)<\/li>\n\n\n\n<li><strong>\ub2e4\uc911 Python \ubc84\uc804\/\ubcf5\uc7a1 \ud658\uacbd<\/strong>&nbsp;\u2192&nbsp;<code>virtualenv<\/code>&nbsp;(pip install \ud6c4 \uc0ac\uc6a9)<\/li>\n<\/ul>\n\n\n\n<p>macOS Homebrew Python \uc0ac\uc6a9\uc790\ub77c\uba74 \ub458 \ub2e4 \uc798 \ub3d9\uc791\ud558\uc9c0\ub9cc,&nbsp;<strong>venv\ubd80\ud130 \uc2dc\uc791<\/strong>\ud558\ub294 \uac8c \uac00\uc7a5 \ubb34\ub09c\ud569\ub2c8\ub2e4!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud30c\uc774\uc36c \uac00\uc0c1\ud658\uacbd\uc744 \uc124\uba85\ud560 \ub54c \ub3c4\uad6c\uac00 \ub108\ubb34 \ub9ce\uc774 \ub4f1\uc7a5\ud558\uba74 \ucd08\ubcf4\uc790\ub294 \uc624\ud788\ub824&#8230;<\/p>","protected":false},"author":3,"featured_media":5844,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[3],"tags":[1202,1242,1243,1240,1201,987,1198,1246],"class_list":["post-5843","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-coding","tag-mac","tag-pip-freeze","tag-requirements-txt","tag-venv","tag-windows","tag-987","tag-1198","tag-1246"],"taxonomy_info":{"category":[{"value":3,"label":"\ud30c\uc774\uc36c(Python)"}],"post_tag":[{"value":1202,"label":"Mac"},{"value":1242,"label":"pip freeze"},{"value":1243,"label":"requirements.txt"},{"value":1240,"label":"venv"},{"value":1201,"label":"Windows"},{"value":987,"label":"\uac00\uc0c1\ud658\uacbd"},{"value":1198,"label":"\ud30c\uc774\uc36c \ud658\uacbd \uc124\uc815"},{"value":1246,"label":"\ud611\uc5c5"}]},"featured_image_src_large":["https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-64.png",512,304,false],"author_info":{"display_name":"TERE","author_link":"https:\/\/secondlife.lol\/zh\/author\/tere\/"},"comment_info":0,"category_info":[{"term_id":3,"name":"\ud30c\uc774\uc36c(Python)","slug":"python-coding","term_group":0,"term_taxonomy_id":3,"taxonomy":"category","description":"","parent":20,"count":116,"filter":"raw","cat_ID":3,"category_count":116,"category_description":"","cat_name":"\ud30c\uc774\uc36c(Python)","category_nicename":"python-coding","category_parent":20}],"tag_info":[{"term_id":1202,"name":"Mac","slug":"mac","term_group":0,"term_taxonomy_id":1202,"taxonomy":"post_tag","description":"","parent":0,"count":7,"filter":"raw"},{"term_id":1242,"name":"pip freeze","slug":"pip-freeze","term_group":0,"term_taxonomy_id":1242,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":1243,"name":"requirements.txt","slug":"requirements-txt","term_group":0,"term_taxonomy_id":1243,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"},{"term_id":1240,"name":"venv","slug":"venv","term_group":0,"term_taxonomy_id":1240,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":1201,"name":"Windows","slug":"windows","term_group":0,"term_taxonomy_id":1201,"taxonomy":"post_tag","description":"","parent":0,"count":7,"filter":"raw"},{"term_id":987,"name":"\uac00\uc0c1\ud658\uacbd","slug":"%ea%b0%80%ec%83%81%ed%99%98%ea%b2%bd","term_group":0,"term_taxonomy_id":987,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"},{"term_id":1198,"name":"\ud30c\uc774\uc36c \ud658\uacbd \uc124\uc815","slug":"%ed%8c%8c%ec%9d%b4%ec%8d%ac-%ed%99%98%ea%b2%bd-%ec%84%a4%ec%a0%95","term_group":0,"term_taxonomy_id":1198,"taxonomy":"post_tag","description":"","parent":0,"count":8,"filter":"raw"},{"term_id":1246,"name":"\ud611\uc5c5","slug":"%ed%98%91%ec%97%85","term_group":0,"term_taxonomy_id":1246,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/5843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/comments?post=5843"}],"version-history":[{"count":4,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/5843\/revisions"}],"predecessor-version":[{"id":5949,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/5843\/revisions\/5949"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/media\/5844"}],"wp:attachment":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/media?parent=5843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/categories?post=5843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/tags?post=5843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}