Ачааллж байна...
Өмнөх хичээлд та тусдаа өрөө барьсан. Одоо тэр өрөөнд хэрэгсэл оруулах цаг болжээ. Python-ы ертөнцөд бусад хүмүүсийн бичсэн, бэлэн болгож нийтлүүлсэн кодын багцыг package гэж нэрлэдэг, зарим үед library буюу сан гэж ч ярьдаг — хоёулаа ойролцоо утгатай бөгөөд энэ сургалтын турш би хоёуланг нь хэрэглэнэ. Ийм package-уудыг татаж, компьютерт суулгаж, устгах ажлыг гүйцэтгэдэг хэрэгслийг pip гэж нэрлэдэг. Pip нь Python-той хамт ирдэг тул та түүнийг тусад нь суулгах шаардлагагүй — аль хэдийн таны virtual environment дотор бэлэн байгаа.
Курс 1-д та import random гэж бичихдээ юу ч суулгах шаардлагагүй байсныг санаж байгаа байх. Тэр нь random бол Python-ы standard library буюу стандарт сангийн нэг хэсэг учраас тэр — Python-той хамт үргэлж ирдэг, хэзээ ч суулгах хэрэггүй хэсэг. Гэвч Python-ы жинхэнэ хүч нь түүний гадна орших хэдэн зуун мянган package-д оршдог. Тэдгээрийг дэлхийн өнцөг булан бүрийн программистууд бичиж, PyPI (Python Package Index) гэдэг нийтийн агуулахад байршуулсан байдаг. Pip нь тэр агуулахаас татаж авч, таны идэвхтэй өрөөнд суулгаж өгдөг шуудангийн үйлчилгээ шиг ажилладаг.
Энэ хичээл дуусахад та package зөв суулгаж, юу суусныг шалгаж, төслийнхөө шаардлагыг requirements.txt гэдэг файлд тэмдэглэж, тэр файлаас бүх зүйлийг нэг тушаалаар сэргээж чаддаг болно. Энэ дөрвөн чадвар нь орчин үеийн Python төсөл бүрийн суурь дадал юм — framework ашиглах гэж байгаа хэн бүхэн эхлээд эдгээрийг мэддэг байх ёстой.
Өмнөх хичээлийн зүйрлэлийг үргэлжлүүлье. Танд одоо тусдаа өрөө байгаа, гэхдээ хоосон. Pip бол таны захиалгаар агуулахаас хэрэгсэл авчирч өгдөг ажилтан. Та түүнд "надад алх авчирч өгөөч" гэж хэлэхэд тэр том нийтийн агуулах руу очиж, алх олж, аваад ирээд, таны өрөөний тавиур дээр тавьж өгдөг. Чухал зүйл нь: тэр АЛЬ ӨРӨӨНД хэрэгслээ тавихаа таны яг тэр мөчид хаана зогсож байгаагаас шалтгаалж шийддэг. Хэрэв та талхны өрөөндөө зогсож байвал алх тэнд очно. Хэрэв та огт өрөөнд ороогүй, коридорт зогсож байвал алх коридорт хаягдана — тэгээд дараа нь та өрөөндөө орж ирэхэд алх олдохгүй.
Энэ бол pip-тэй холбоотой бүх төөрөгдлийн жинхэнэ үндэс. Pip өөрөө буруудаггүй; та хаана зогсож байгаагаа мэдэхгүй байх нь л алдаа руу хөтөлдөг. Тиймээс дүрэм маш энгийн бөгөөд бүхэл сургалтын турш давтагдана: pip ашиглахаасаа өмнө (venv) бичиг терминал дээрээ харагдаж байгаа эсэхийг шалга.
Алхам 1. Өмнөх хичээлд үүсгэсэн lesson-01 хавтсаа PowerShell-ээр нээнэ үү (эсвэл шинээр lesson-02 хавтас үүсгээд, дотор нь python -m venv venv гэж шинэ орчин үүсгэнэ — аль нь ч болно, гэхдээ хичээлийн жишээ хуучин орчин дээр шууд үргэлжилнэ).
Алхам 2. Орчноо идэвхжүүлнэ:
powershell
.\venv\Scripts\Activate.ps1Алхам 3. Мөрийн эхэнд (venv) гарч ирснийг НҮДЭЭРЭЭ баталгаажуулна уу. Энэ алхмыг алгасах юм бол энэ хичээлийн үлдсэн хэсэг бүхэлдээ буруу ажиллана.
(Эзэмшигчид: (venv) идэвхтэй байгаа терминалын screenshot энд тохиромжтой.)
Юу ч суулгахаас өмнө одоогийн байдлыг харъя. Дараах тушаалыг бичээд Enter дарна уу:
powershell
pip listХариуд нь ойролцоогоор ийм зүйл харагдана:
Package Version
------- -------
pip 24.0Энэ бол таны хоосон өрөөний тавиурын жагсаалт. pip өөрөө л байна, өөр юу ч алга. Энэ бол сайн шинж — та цоо цэвэр, тусгаарлагдсан орчинд байгаагийн нотолгоо. Хэрэв та энэ тушаалыг deactivate хийсний дараа буюу (venv) байхгүй үед ажиллуулбал огт өөр, урт жагсаалт харагдана: таны компьютерын нийтийн Python дээр урьд нь суусан бүх зүйл. Тэр ялгаа өөрөө virtual environment яг юу хийж байгааг харуулж байгаа юм.
pip list бол таны хамгийн ойрын найз болох тушаал. Аливаа зүйл ажиллахгүй байвал юуны өмнө үүнийг ажиллуулж, "хүлээж байсан сан үнэхээр энд байна уу" гэдгээ шалгаарай.
Одоо жинхэнэ сан суулгая. Бид requests гэдэг санг сонгоно — энэ бол интернэтээс мэдээлэл татдаг сан бөгөөд Бүлэг 11-д бид түүнийг бүрэн ашиглах болно. Одоохондоо түүнийг зөвхөн суулгах дасгал болгон авч үзье.
Алхам 4. Дараах тушаалыг бичээд Enter дарна уу:
powershell
pip install requestsТерминал дээр хэдэн мөр урсаж, татаж байгаа тухай мэдээлэл гарч, эцэст нь ойролцоогоор ийм мөр гарч ирнэ:
Successfully installed certifi-2024.7.4 charset-normalizer-3.3.2 idna-3.7 requests-2.32.3 urllib3-2.2.2Энд нэг сонирхолтой зүйл байна: та зөвхөн requests суулгахыг хүссэн боловч таван нэр харагдаж байна. Яагаад вэ? Учир нь requests өөрөө бусад сангуудыг ашиглан бичигдсэн байдаг. Тэдгээрийг dependency буюу хамаарал гэж нэрлэдэг. Pip нь маш ухаалаг: та нэг санг гуйхад тэр сангийн ажиллахад шаардлагатай бүх дэд сангуудыг өөрөө олж, автоматаар хамт суулгаж өгдөг. Та тэдгээрийн талаар бодох шаардлагагүй, зөвхөн байдгийг нь мэдэж байхад хангалттай.
Алхам 5. Одоо тавиураа дахин шалгая:
powershell
pip listОдоо жагсаалт нэлээд урт болсон байна:
Package Version
------------------ ---------
certifi 2024.7.4
charset-normalizer 3.3.2
idna 3.7
pip 24.0
requests 2.32.3
urllib3 2.2.2Хэрэгсэл тань өрөөнд ирлээ. Хүсвэл File Explorer-ээр venv\Lib\site-packages хавтсыг нээж үзээрэй — тэнд requests нэртэй жинхэнэ хавтас байгааг харах болно. Өмнөх хичээлд бараг хоосон байсан тэр газар одоо бодит код байна.
Жагсаалт харагдаж байгаа нь сайн, гэхдээ жинхэнэ шалгуур бол Python түүнийг ашиглаж чадах эсэх. Дараах тушаалыг бичээд Enter дарна уу:
powershell
python -c "import requests; print(requests.__version__)"-c гэдэг нь "дараах кодыг шууд ажиллуул" гэсэн заавар — файл үүсгэхгүйгээр нэг мөр Python ажиллуулах хурдан арга. Хариуд нь хувилбарын дугаар хэвлэгдэнэ, жишээ нь 2.32.3. Хэрэв энэ ажиллавал таны сан жинхэнээсээ ашиглахад бэлэн боллоо гэсэн үг.
Одоо бид энэ сургалтын хамгийн түгээмэл алдааг зориудаар үүсгэж, өөрсдийн нүдээр харна. Ингэснээр дараа нь тохиолдоход та айхгүй, шууд танина.
Алхам 6. Орчноосоо гарна:
powershell
deactivate(venv) бичиг алга болсныг анзаараарай. Та коридорт гарлаа.
Алхам 7. Дээрх шалгах тушаалыг ЯГ ДАХИН ажиллуулна:
powershell
python -c "import requests; print(requests.__version__)"Хэрэв таны компьютерын нийтийн Python дээр requests урьд нь суугаагүй бол ийм алдаа гарна:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'requests'Энэ мессежийг сайн уншъя. ModuleNotFoundError гэдэг нь "модуль олдсонгүй" гэсэн алдааны төрөл. No module named 'requests' гэдэг нь "requests нэртэй модуль байхгүй байна" гэж шууд хэлж байна. Гэвч бид түүнийг дөнгөж сая суулгасан шүү дээ! Тэгвэл яагаад олдохгүй байна вэ?
Хариулт нь: суулгасан газар нь одоо байгаа газраас өөр учраас. Та requests-ийг venv ӨРӨӨНД суулгасан, харин одоо коридорт зогсож байна. Коридорт requests байхгүй. Python буруу зүйл хийгээгүй, худлаа ч ярихгүй байна — тэр яг үнэнийг л хэлж байна: одоо зогсож байгаа газраас минь requests олдохгүй байна.
Алхам 8. Орчноо дахин идэвхжүүлээд:
powershell
.\venv\Scripts\Activate.ps1
python -c "import requests; print(requests.__version__)"Хувилбарын дугаар дахин хэвлэгдэнэ. Юу ч дахин суулгаагүй — та зөвхөн зөв өрөөндөө буцаж орсон.
Энэ туршилтыг би зориудаар хийлгэсэн, учир нь та энэ сургалтын явцад ModuleNotFoundError-ыг заавал дахин харна. Тэр үед та эхлээд сандран интернэтээс хайхын оронд, эхний асуултаа өөрөөсөө асуух ёстой. Тиймээс энэ сургалтын стандарт сануулга ийм байна:
Хэрэв
ModuleNotFoundErrorгарвал —(venv)идэвхтэй эсэхээ шалгаарай.
Энэ сануулга Бүлэг 11-д requests ашиглах үед, Бүлэг 15-д FastAPI ажиллуулах үед дахин гарч ирнэ. Тохиолдлын арав есөн хувьд шалтгаан нь яг энэ.
Одоо мэргэжлийн зуршлын хамгийн чухал хэсэг рүү орно. Танд асуулт тавъя: хэрэв та энэ төслөө найздаа илгээвэл, эсвэл шинэ компьютер дээр татаж авбал, тэр хүн юу суулгах ёстойг яаж мэдэх вэ?
Мэдээж та venv хавтсаа хамт илгээж болохгүй. Тэр хавтас маш том, таны компьютерын замтай холбоотой, өөр машин дээр ажиллахгүй байх магадлалтай. Мэргэжлийн ертөнцөд venv хавтсыг хэзээ ч хуваалцдаггүй, GitHub-д ч байршуулдаггүй. Түүний оронд бид зөвхөн ЖАГСААЛТЫГ нь хуваалцдаг: "энэ төсөл ажиллахын тулд яг эдгээр package-ууд, яг эдгээр хувилбартайгаар хэрэгтэй." Тэр жагсаалтыг агуулсан файлыг requirements.txt гэж нэрлэдэг.
Зүйрлэлээр хэлбэл: та найздаа бүтэн гал тогооны өрөөгөө илгээхгүй, харин ЖОРЫГ нь илгээнэ. Найз тань жорыг уншаад өөрийн гал тогоондоо ижил зүйлсийг бэлдэнэ.
Алхам 9. Идэвхтэй venv дотроос дараах тушаалыг ажиллуулна:
powershell
pip freeze > requirements.txtЭнэ мөрийг задалж үзье. pip freeze гэдэг нь "одоо суусан бүх package-ийг яг тэр хувилбартай нь жагсаа" гэсэн тушаал — pip list-тэй төстэй ч гэсэн файлд бичихэд тохиромжтой форматаар гаргадаг. > тэмдэг бол PowerShell-ийн үйлдэл: "гаралтыг дэлгэц дээр хэвлэхийн оронд файл руу бич." requirements.txt бол үүсэх файлын нэр. Энэ нэр бол дэлхий нийтийн заншил — бараг бүх Python төсөл яг ийм нэртэй файлтай байдаг тул та түүнийг өөрөөр нэрлэх ёсгүй.
Алхам 10. Үүссэн файлыг харна:
powershell
type requirements.txtОйролцоогоор ийм агуулгатай байна:
certifi==2024.7.4
charset-normalizer==3.3.2
idna==3.7
requests==2.32.3
urllib3==2.2.2Мөр бүр нь "нэр, дараа нь хоёр тэнцүү тэмдэг, дараа нь яг тэр хувилбар" гэсэн бүтэцтэй. == нь "яг энэ хувилбар, өөр ямар ч хувилбар биш" гэсэн утгатай. Яг энэ нарийвчлал л гол ач холбогдолтой: хэрэв энд зөвхөн requests гэж бичсэн байсан бол дараа жил хэн нэгэн энэ төслийг сэргээхэд тухайн үеийн хамгийн шинэ, магадгүй өөрчлөгдсөн, магадгүй эвдэрсэн хувилбар суух байсан. Хувилбарыг тогтоосноор та "энэ програм ажиллаж байсан яг тэр орчин" гэдгийг цаг хугацааны нэг цэг дээр тогтоож үлдээж байгаа юм.
Одоо эсрэг чиглэлийг туршъя — жор уншаад өрөөгөө сэргээх.
Алхам 11. Өөрийг чинь шинэ компьютер дээр байгаа мэт төсөөлье. Одоо байгаа өрөөгөө бүхэлд нь устгаж үзье. Эхлээд гарна:
powershell
deactivateДараа нь venv хавтсыг устгана:
powershell
Remove-Item -Recurse -Force venvЭнэ бол бодит устгал — venv хавтас, дотор нь байсан requests бүхэлдээ устана. Гэхдээ санаа зовох хэрэггүй: энэ бол яг л virtual environment-ийн гоо сайхан. Устгасан ч гэсэн таны нэг ч мөр код алдагдаагүй, requirements.txt тань хэвээрээ.
Алхам 12. Шинэ орчин үүсгээд идэвхжүүлнэ:
powershell
python -m venv venv
.\venv\Scripts\Activate.ps1Алхам 13. Одоо жороосоо бүх зүйлийг НЭГ тушаалаар сэргээнэ:
powershell
pip install -r requirements.txt-r гэдэг нь "requirements" гэсний товчлол бөгөөд "дараах файлыг уншаад, тэнд жагсаасан бүх зүйлийг суулга" гэсэн заавар юм. Pip нь файл дахь мөр бүрийг уншиж, зөв хувилбартай нь татаж, суулгана. Дуусахад pip list ажиллуулж шалгаарай — өмнөх жагсаалт яг хэвээрээ буцаж ирсэн байх ёстой.
Энэ бол өдөр тутам ашиглагддаг жинхэнэ мэргэжлийн урсгал юм. Дэлхийн аль ч Python төслийг GitHub-аас татаж авахад та эхлээд яг эдгээр гурван тушаалыг ажиллуулна: venv үүсгэх, идэвхжүүлэх, pip install -r requirements.txt. Тэгээд тэр төсөл таны компьютер дээр ажиллана. Бүлэг 15-д FastAPI төсөл эхлүүлэхэд ч яг ижил зүйл давтагдана.
Хамгийн энгийн дүрэм: шинэ package суулгах бүрдээ дахин freeze хий.
powershell
pip install ямар-нэг-сан
pip freeze > requirements.txtХоёр дахь мөр нь файлыг дахин бүтнээр нь бичиж, шинэ санг оруулна. Энэ хоёр тушаалыг үргэлж хамт бичдэг зуршил бий болговол таны төслийн жор хэзээ ч хоцрохгүй.
Хэрэв сонирхвол: pip install rich гэж бичээд rich нэртэй санг суулгаад үзээрэй. Энэ бол терминал дээр өнгөтэй, гоё харагдах текст хэвлэдэг сан. Дараа нь:
powershell
python -c "from rich import print; print('[bold blue]Сайн байна уу[/bold blue]')"Текст өнгөтэй хэвлэгдэнэ. Дараа нь pip list ажиллуулж rich жагсаалтад орсныг харж, pip freeze > requirements.txt хийж type requirements.txt бичээд файлдаа шинэ мөр нэмэгдсэнийг ажиглаарай. Энэ бүхэн заавал биш — гэхдээ өөрийн гараар бүтэн мөчлөгийг нэг удаа туулах нь ойлголтыг бататгадаг.
Мөн хүсвэл: pip uninstall rich бичээд устгаж, дараа нь pip freeze > requirements.txt дахин ажиллуулж, файлаас тэр мөр алга болсныг хараарай.
1. venv идэвхгүй байхад суулгах
Хамгийн түгээмэл, хамгийн чимээгүй алдаа. Pip ямар ч гомдол хэлэлгүй амжилттай суулгана — гэхдээ буруу газар. Дараа нь программаа ажиллуулахад:
ModuleNotFoundError: No module named 'requests'Засвар: deactivate хийж, .\venv\Scripts\Activate.ps1 бичиж, (venv) гарч ирснийг баталгаажуулаад, pip install дахин ажиллуулна.
2. Package-ийн нэр буруу бичих
ERROR: Could not find a version that satisfies the requirement reqeusts (from versions: none)
ERROR: No matching distribution found for reqeustsАнглиар "Could not find a version that satisfies the requirement" гэдэг нь "ийм нэртэй юм олдсонгүй" гэсэн үг. Ихэвчлэн шалтгаан нь энгийн үсгийн алдаа — дээрх жишээнд requests биш reqeusts гэж бичсэн байна. Нэрээ анхааралтай уншаад дахин оролдоорой. Заримдаа мөн интернэт холболт тасарсан ч ийм алдаа гарч болно.
3. requirements.txt буруу хавтсанд байх
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'"No such file or directory" гэдэг нь "ийм файл байхгүй байна" гэсэн үг. Таны терминал requirements.txt байрлаж байгаа хавтсанд байхгүй байна. pwd бичээд байршлаа шалгаж, dir бичээд файл жагсаалтад харагдаж байгаа эсэхийг шалгаарай.
4. venv хавтсыг GitHub-д байршуулах
Энэ нь алдааны мессеж өгдөггүй, гэхдээ мэргэжлийн ертөнцөд буруу үйлдэл гэж тооцогддог. venv хавтас нь маш том, зөвхөн таны компьютерт зориулагдсан. Хуваалцах ёстой зүйл бол зөвхөн requirements.txt. Хэрэв та ирээдүйд GitHub ашиглавал .gitignore файлдаа venv/ гэсэн мөр нэмж, түүнийг зориудаар оруулахгүй байлгадаг.
pip бол package суулгах хэрэгсэл; PyPI бол тэдгээрийг татаж авдаг нийтийн агуулах.
Pip нь ҮРГЭЛЖ таны одоо идэвхтэй байгаа орчинд суулгадаг — тиймээс (venv) бичиг харагдаж байгаа эсэхийг эхлээд шалга.
pip install <нэр> — суулгах. pip list — юу суусныг харах. pip uninstall <нэр> — устгах.
pip freeze > requirements.txt — төслийн жорыг бичиж үлдээх. Шинэ сан суулгах бүрдээ дахин ажиллуул.
pip install -r requirements.txt — жороос бүх зүйлийг сэргээх. Дэлхийн аль ч Python төслийг эхлүүлэх стандарт арга.
venv хавтсыг хэзээ ч хуваалцахгүй; зөвхөн requirements.txt-ийг хуваалцна.
Хэрэв ModuleNotFoundError гарвал — (venv) идэвхтэй эсэхээ шалгаарай.
Бүлэг 1 дууслаа. Та одоо мэргэжлийн Python төслийн суурь зуршлыг эзэмшлээ: тусгаарлагдсан орчин үүсгэх, түүнд package суулгах, шаардлагаа тэмдэглэж үлдээх. Эдгээр зуршил Бүлэг 11-д requests суулгах үед, Бүлэг 15-д FastAPI суулгах үед шууд ажиллаж эхэлнэ.
Дараагийн Бүлэг 2-оос бид кодын бичлэг рүү орно. Тэнд та Курс 1-д бичиж байсан урт loop-уудыг мэргэжлийн Python программистууд хэрхэн нэг мөрөнд, илүү ойлгомжтой, илүү тод бичдэгийг үзнэ. Эхний хичээл нь list comprehension — Python-ы хамгийн танигдсан, хамгийн олон ашиглагддаг бичлэгийн хэлбэрүүдийн нэг.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.