Ачааллж байна...
Курс 1-д та import random, import datetime гэж бичээд бусдын бичсэн кодыг өөрийн программдаа ашиглаж байсныг санаж байгаа байх. Тэдгээр модулиуд Python-той хамт таны компьютер дээр аль хэдийн суусан байсан учраас та ямар ч нэмэлт ажил хийхгүйгээр шууд ашиглаж чадаж байсан. Гэхдээ Python-ы ертөнцөд түүнээс хэдэн зуун мянга дахин олон сан байдаг бөгөөд тэдгээрийн ихэнх нь Python-той хамт ирдэггүй — тэднийг та өөрөө татаж суулгах ёстой болно. Энэ сургалтын явцад та ядаж хоёр ийм санг суулгана: Бүлэг 11-д requests (интернэтээс мэдээлэл татах), Бүлэг 15-д fastapi ба uvicorn (өөрийн API бичих). Тэр мөчид хүрэхээс өмнө нэг чухал зуршлыг эзэмших ёстой, тэр зуршил бол virtual environment юм.
Virtual environment гэдэг нь монголоор "виртуал орчин" гэсэн утгатай ч би энэ нэр томьёог англиар нь хэвээр үлдээнэ, учир нь та documentation, интернэтийн заавар, алдааны мессеж бүхэнд яг ийм үгээр л уулзана. Товчлон venv гэж бичдэг, ярихдаа ч ихэнхдээ "вэнв" гэж хэлдэг. Энэ бол таны нэг тодорхой төсөлд зориулсан, бусад төслөөс бүрэн тусгаарлагдсан, өөрийн гэсэн Python-ы сангийн агуулах юм. Мэргэжлийн Python программист шинэ төсөл эхлэх бүрдээ юуны өмнө үүнийг үүсгэдэг — үл хамаарах зүйл бараг байдаггүй. Энэ хичээл дуусахад та түүнийг яагаад тэгдгийг ойлгоод зогсохгүй, өөрөө хийж чаддаг болно.
Та том агуулахтай хүн гэж төсөөлье. Танд хэд хэдэн өөр ажил байна: нэг нь модон тавилга хийх, нөгөө нь машин засах, гурав дахь нь талх барих. Хэрэв та бүх хэрэгсэл, бүх материалаа нэг л том өрөөнд, нэг л шүүгээнд овоолвол эхэндээ асуудал үүсэхгүй байж мэднэ. Гэхдээ ажил олшрох тусам эмх замбараагүй байдал эхэлнэ: машины тос гурилын шуудайн дэргэд, хөрөө нь гурилын шигшүүртэй хольцолдоно. Улмаар илүү муу зүйл болно — хоёр өөр ажил тань нэг л зүйлийн ӨӨР хувилбарыг шаардана. Талх барихад танд нэг төрлийн жин хэмжигч хэрэгтэй, тавилга хийхэд нь тэс өөр жин хэмжигч. Хоёулаа "жин хэмжигч" гэдэг нэртэй, гэхдээ хоорондоо солигдвол хоёулаа сүйрнэ.
Virtual environment бол ажил бүрдээ тусдаа өрөө өгч байгаа хэрэг. Талхны өрөөнд зөвхөн талхны хэрэгсэл, тавилгын өрөөнд зөвхөн тавилгын хэрэгсэл. Тэд хоорондоо хэзээ ч холилдохгүй, нэг нь нөгөөгөө эвдэхгүй. Нэг өрөөндөө шинэ хэрэгсэл авчирахад нөгөө өрөөнд юу ч өөрчлөгдөхгүй. Хэрэв нэг өрөө бүрэн эмх замбараагүй болвол та түүнийг бүхэлд нь хогийн саванд хаяад шинээр эхлүүлж болно — бусад өрөөнүүд тань хөндөгдөхгүй.
Программын ертөнцөд энэ асуудал маш бодитой. Таны нэг төсөл requests сангийн 2.28 хувилбарыг шаардаж байхад, өөр нэг төсөл 2.31 хувилбарыг шаардаж болно. Хэрэв бүх сан нэг л дундын агуулахад суусан бол хоёр хувилбар зэрэг байж чадахгүй — нэг нь нөгөөгөө дарна. Тэгээд нэг өдөр таны хэдэн сарын өмнө бичсэн, төгс ажиллаж байсан программ гэнэт эвдэрнэ, тэгээд та яагаад гэдгийг ойлгохгүй. Virtual environment яг үүнээс хамгаалдаг.
Virtual environment бол үргэлж НЭГ ТОДОРХОЙ ХАВТАСТАЙ холбоотой байдаг. Тиймээс эхлээд бид энэ сургалтын кодыг хадгалах хавтас үүсгэнэ.
Алхам 1. File Explorer нээгээд өөрийн хүссэн газраа (жишээ нь Documents дотор) шинэ хавтас үүсгээд python-advanced гэж нэрлэнэ үү. Нэрэнд зай, кирилл үсэг ашиглахгүй байсан нь дээр — терминал дээр ажиллахад амархан болно.
Алхам 2. Тэр хавтсаа нээгээд, дотор нь дахин нэг хавтас үүсгэнэ: lesson-01. Ирээдүйд хичээл бүрт ийм тусдаа хавтас үүсгэж болно, эсвэл нэг л хавтсанд ажиллаж болно — энэ таны сонголт.
Алхам 3. Одоо терминалаа тэр хавтсанд байрлуулна. Хамгийн хялбар арга: File Explorer дээр lesson-01 хавтас дотроо байхдаа хаягийн мөрөнд (дээд талын зам харагдаж байгаа мөрөнд) дарж, тэнд powershell гэж бичээд Enter дарна. PowerShell цонх шууд тэр хавтсанд байрлаж нээгдэнэ.
(Эзэмшигчид: энд PowerShell шинээр нээгдсэн, зам нь lesson-01 дээр байгаа screenshot тавихад тохиромжтой.)
Терминал зөв газартаа байгаа эсэхийг шалгахын тулд ингэж бичээд Enter дарна уу:
powershell
pwdХариуд нь таны хавтасны бүтэн зам хэвлэгдэнэ, төгсгөл нь lesson-01 гэж дуусах ёстой. Хэрэв өөр зам харагдвал та буруу газар байна гэсэн үг — File Explorer-ээс дахин нээгээрэй.
Одоо бид үнэндээ virtual environment үүсгэнэ. Ганцхан тушаал:
Алхам 4. PowerShell дээр дараах тушаалыг бичээд Enter дарна уу:
powershell
python -m venv venvЭнэ мөрийг хэсэг хэсгээр нь задалж үзье, учир нь энд гурван өөр зүйл байна. python бол таны компьютер дээрх Python-ыг дуудаж байна — Курс 1-д ашиглаж байсан яг тэр Python. -m venv гэдэг нь "venv нэртэй модулийг ажиллуул" гэсэн заавар; venv бол Python-той хамт ирдэг суурин модуль тул тусад нь суулгах шаардлагагүй. Хамгийн сүүлийн venv бол шинээр үүсэх ХАВТАСНЫ НЭР. Тэгэхээр энэ мөр нь "Python аа, venv модулиа ажиллуулж, venv нэртэй шинэ орчин үүсгэ" гэж хэлж байна.
Хоёр venv хажуу хажуудаа байгаа нь эхэндээ будлиантай санагдаж магадгүй. Эхнийх нь модулийн нэр (өөрчлөгдөхгүй), сүүлийнх нь та өөрөө сонгосон хавтасны нэр. Та түүнийг myenv, orchin гэх мэт өөр нэрээр ч нэрлэж болно, гэхдээ бүх дэлхий venv гэж нэрлэдэг заншилтай, тиймээс бид ч бас тэгнэ — ингэснээр таны кодыг өөр хүн харахад шууд танина.
Тушаал ажиллахад хэдэн секунд зарцуулагдаж магадгүй, дараа нь ямар ч мессежгүйгээр дуусна. Python-д "чимээгүй байх нь амжилттай болсны шинж". File Explorer-ээ шалгавал lesson-01 дотор venv нэртэй шинэ хавтас үүссэн байна. Дотор нь орж үзвэл Scripts, Lib зэрэг хавтас харагдана. Тэдгээрийг гараар өөрчлөх, задлах шаардлагагүй — тэднийг зөвхөн Python өөрөө ашиглана.
(Эзэмшигчид: venv хавтас File Explorer-т үүссэн харагдаж байгаа screenshot энд тохиромжтой.)
Одоо танд virtual environment байна, гэхдээ энэ нь өөрөө хараахан ямар ч үүрэг гүйцэтгээгүй байгаа. Өрөө нь баригдсан ч гэсэн та тэр өрөө рүү ОРООГҮЙ л байна. Орох үйлдлийг activate буюу идэвхжүүлэх гэж нэрлэдэг, энэ бол хамгийн олон хүн мартдаг алхам.
Алхам 5. PowerShell дээр дараах тушаалыг бичээд Enter дарна уу:
powershell
.\venv\Scripts\Activate.ps1Хэрэв бүх зүйл сайн болбол терминалын мөрийн эхэнд (venv) гэсэн бичиг гарч ирнэ. Жишээ нь ийм харагдана:
(venv) PS C:\Users\Dulguun\Documents\python-advanced\lesson-01>Тэр (venv) бол таны хамгийн найдвартай шинж тэмдэг. Тэр байгаа цагт та тусдаа өрөөндөө байна — суулгасан сан бүр зөвхөн энэ төсөлд хамаарна. Тэр байхгүй бол та нийтийн коридорт зогсож байна гэсэн үг.
(Эзэмшигчид: (venv) бичиг мөрийн эхэнд харагдаж байгаа терминалын screenshot энд ЗААВАЛ хэрэгтэй — энэ бол хичээлийн гол дүрс.)
Windows дээр энэ алхам эхний удаад бүтэлгүйтэх нь маш түгээмэл. Та ийм улаан алдаа хармаар байх:
.\venv\Scripts\Activate.ps1 : File C:\Users\Dulguun\Documents\python-advanced\lesson-01\venv\Scripts\Activate.ps1
cannot be loaded because running scripts is disabled on this system. For more information, see
about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.Энэ мессеж айдас төрүүлж магадгүй ч, үнэндээ маш энгийн зүйл яриад байна. Англи хэлээр "running scripts is disabled on this system" гэдэг нь "энэ компьютер дээр script ажиллуулах эрх хаалттай байна" гэсэн үг. Windows нь аюулгүй байдлын үүднээс PowerShell script-ийг анхдагчаар хориглодог — учир нь хортой script интернэтээс татагдаж ирээд өөрөө ажиллах эрсдэлээс сэргийлж байгаа юм. Гэхдээ Activate.ps1 бол таны компьютер дээр Python өөрөө дөнгөж сая үүсгэсэн файл, хаанаас ч татагдаж ирээгүй, бүрэн аюулгүй.
Засвар. Дараах тушаалыг бичээд Enter дарна уу:
powershell
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedАсуулт гарч ирвэл Y гээд Enter дарна. Энэ тушаал юу хийж байгааг тайлбарлая: -Scope CurrentUser гэдэг нь зөвхөн ТАНЫ хэрэглэгчийн эрхэнд хамаарна гэсэн үг, компьютерын бусад хэрэглэгч, системийн тохиргоог хөндөхгүй. RemoteSigned гэдэг нь "өөрийн компьютер дээр үүссэн script-ийг ажиллуулахыг зөвшөөр, гэхдээ интернэтээс татагдсан script-ийг гарын үсэггүй бол ажиллуулахгүй" гэсэн бодлого юм. Өөрөөр хэлбэл энэ бол хамгаалалтыг бүрэн унтраахгүй, харин зөвхөн шаардлагатай хэрийг нь суллаж байгаа хэрэг. Энэ тушаалыг та амьдралдаа ганц удаа л бичнэ, дараа нь дахин хэрэггүй.
Одоо Алхам 5-ыг дахин туршина уу. (venv) гарч ирэх ёстой.
Идэвхжсэн байхдаа доорх тушаалыг туршиж үзье:
powershell
python --versionТанд Python-ы хувилбар харагдана, жишээ нь Python 3.12.4. Одоохондоо энэ нь идэвхжүүлээгүй үеийнхтэй адилхан харагдаж магадгүй. Гэхдээ ялгаа нь юунд байна вэ гэвэл, доорх тушаалаар үзнэ:
powershell
where.exe pythonИдэвхжсэн байхад эхний мөрөнд таны venv\Scripts\python.exe зам харагдана. Өөрөөр хэлбэл python гэж бичихэд одоо систем таны төслийн ДОТОРХ Python-ыг дуудаж байна, компьютерын нийтийн Python-ыг биш. Энэ бол өрөөний хаалга хаагдсаны бодит нотолгоо.
Хоёр дахь жишээ: сан хаана суудаг вэ. Идэвхжсэн venv дотор ямар нэг сан суулгавал (дараагийн хичээлд яг үүнийг хийнэ) тэр сан venv\Lib\site-packages хавтас дотор л очиж суух болно. Таны компьютерын үндсэн Python-д юу ч нэмэгдэхгүй. Тиймээс та эндээс юу ч суулгасан, юуг ч эвдсэн, эцсийн эцэст venv хавтсаа устгахад л бүх зүйл цэвэрхэн буцна.
Гурав дахь жишээ: хоёр төсөл зэрэг. Та lesson-01 хавтсандаа нэг venv-тэй байхад, өөр газар weather-app хавтас үүсгээд тэнд өөр venv үүсгэж болно. Тэр хоёр бие биенийхээ талаар юу ч мэдэхгүй. Нэгэнд нь requests суулгасан бол нөгөө нь түүнийг олохгүй — эхэндээ энэ нь эвгүй санагдаж болох ч яг үүн дээр л бүх утга учир нь оршдог. Тусгаарлалт бол алдаа биш, харин зорилго.
Ажлаа дуусгаад өрөөнөөсөө гарахыг хүсвэл:
powershell
deactivate(venv) бичиг мөрийн эхнээс алга болно. Та нийтийн коридорт буцаж ирлээ. Виртуал орчин устсангүй — зүгээр л та түүнээс гарлаа. Дараа нь эргэж ирэхдээ ахин python -m venv venv бичих ШААРДЛАГАГҮЙ, зөвхөн Алхам 5-ын идэвхжүүлэх тушаалыг л дахин бичнэ.
Энэ ялгааг сайн ойлгоорой, учир нь эхлэгчид ихэвчлэн эндүүрдэг:
python -m venv venv — үүсгэх. Төсөл бүрт АМЬДРАЛДАА НЭГ УДАА.
.\venv\Scripts\Activate.ps1 — идэвхжүүлэх. Терминал шинээр нээх БҮРДЭЭ.
deactivate — гарах. Хүссэн үедээ, эсвэл огт бичихгүй байж болно (терминал хаахад автоматаар гарна).
Хамгийн чухал нь дунд мөр: терминалаа хаагаад дараа өдөр нь дахин нээвэл (venv) байхгүй байна. Хавтас нь газраа хэвээр байгаа ч та түүн рүү дахин орох хэрэгтэй болно. Энэ нь алдаа биш, ердийн зүйл.
Хэрэв сонирхвол: venv идэвхжсэн байхад File Explorer-оор venv\Lib\site-packages хавтас руу ороод юу байгааг хараарай. Одоохондоо бараг хоосон байх болно — pip болон цөөн хэдэн туслах файл л байна. Дараагийн хичээлд бид тэнд ямар нэг зүйл нэмэгдэхийг өөрсдийн нүдээр харна. Энэ хавтас бол таны "өрөөний тавиур" — та юу суулгасан бүхэн тэнд очно.
Мөн хүсвэл: deactivate бичээд (venv) алга болохыг хараад, дараа нь дахин идэвхжүүлж эргэж орж үзээрэй. Хоёр гурван удаа гарч ороход энэ үйлдэл тархинд суух болно, тэгвэл дараагийн хичээлүүдэд та автоматаар хийдэг болно.
1. Activate.ps1 олдохгүй байх
.\venv\Scripts\Activate.ps1 : The term '.\venv\Scripts\Activate.ps1' is not recognized as the name of a
cmdlet, function, script file, or operable program.Англиар "is not recognized" гэдэг нь "энэ юмыг олж чадсангүй" гэсэн үг. Шалтгаан нь бараг үргэлж нэг: та БУРУУ ХАВТАСТ байна. Терминал тань venv хавтас байрлах хавтсанд биш, өөр газар байгаа юм. pwd бичээд байршлаа шалгаарай, дараа нь dir бичээд venv хавтас жагсаалтад харагдаж байгаа эсэхийг шалгаарай. Хэрэв харагдахгүй бол та зөв хавтсанд байхгүй, эсвэл venv-ээ үүсгээгүй байна.
2. Execution policy алдаа
Дээр дэлгэрэнгүй тайлбарласан. Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned гээд Y дарна. Нэг л удаа.
3. (venv) харагдахгүй байхад сан суулгах
Энэ бол алдааны мессеж шууд өгдөггүй, тиймээс хамгийн аюултай нь. Хэрэв (venv) байхгүй байхад та сан суулгавал тэр сан таны компьютерын НИЙТИЙН Python-д суух болно — яг л бидний зайлсхийхийг хүссэн зүйл. Дараа нь венв-ээ идэвхжүүлээд программаа ажиллуулахад ModuleNotFoundError гарч ирнэ, учир нь тэр сан энэ өрөөнд байхгүй.
Тиймээс энэ сургалтын турш ашиглах стандарт зөвлөмжийг эндээс эхлүүлье, та үүнийг олон удаа харах болно:
Хэрэв
ModuleNotFoundErrorгарвал —(venv)идэвхтэй эсэхээ эхлээд шалгаарай.
Дараагийн хичээлд бид энэ алдааг зориудаар үүсгэж, өөрсдийн нүдээр харах болно.
Virtual environment (venv) бол нэг төсөлд зориулсан, тусдаа, тусгаарлагдсан Python-ы сангийн агуулах — тусдаа өрөө.
Мэргэжлийн программист шинэ төсөл бүрт үүнийг үүсгэдэг, ингэснээр төслүүд хоорондоо санг хутгахгүй.
Үүсгэх: python -m venv venv — төсөлд нэг удаа.
Идэвхжүүлэх: .\venv\Scripts\Activate.ps1 — терминал нээх бүрд. (venv) бичиг гарч ирвэл амжилттай.
Windows дээр эхний удаад execution policy алдаа гарвал Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned гээд Y дарна.
Гарах: deactivate.
Одоо танд ажиллаж байгаа, идэвхжсэн virtual environment байна — гэхдээ дотор нь юу ч байхгүй хоосон өрөө. Дараагийн хичээлд бид тэр өрөөнд эхний хэрэгслээ авчирна: pip ашиглан сан суулгаж сурч, pip list-ээр юу байгааг харж, requirements.txt гэсэн файл ашиглан "энэ төсөлд яг эдгээр сангууд хэрэгтэй" гэдгийг тэмдэглэж үлдээх мэргэжлийн зуршлыг эзэмшинэ. Тэр файл бол framework-тэй ажиллах төсөл бүрийн салшгүй хэсэг юм.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.