Python: деректен өз есебіңізге дейін 2-сабақ (барлығы 56)
Жұмыс орны: Python, жобаның ортасы және алғашқы іске қосу
Python курсының екінші сабағы. Тілді орнатамыз, жобаның ортасын жасаймыз, кешегі бағдарламаны соған көшіреміз. Өлшенді: ортаға орнатылған пакет сырттан көрінбейді — `ModuleNotFoundError`, — орта дәл сол үшін жасалады. `.venv` қалтасы 17 МБ тартады және репозиторийге кетпейді.
Не үшін керек
Кешегі бағдарлама жалаң Python-да жұмыс істеді: ештеңе орнатудың қажеті болмады. Бірақ бірнеше сабақтан кейін бізге бөтен кітапханалар керек болады — сұраныстарға, кестелерге, графиктерге. Міне, осы жерде жаңадан бастаушыны алғашқы нағыз қолайсыздық күтеді.
Кітапхананы жүйеге орнатады. Содан кейін басқасын, басқа міндетке. Содан кейін жаңартады. Содан кейін жарты жыл істеп тұрған нәрсе іске қосылмай қалады — нақ не себептен екені түсініксіз. Бөтен машиналарда бұл әңгіме жүйені қайта орнатумен бітеді.
Емі — бір әдет: әр жобаның өз ортасы болады. Бүгін оны жасап, шынымен бөлек екеніне көз жеткіземіз.
Бірден тұтас
Төмендегінің бәрі — терминал. Жол-жолмен теріңіз; $ белгісін теру керек емес, ол — қабықтың шақыруы.
$ python3 --version
Python 3.14.5
$ python3 -m venv .venv # жобаның ортасын жасаймыз
$ source .venv/bin/activate
$ python -c "import sys, pathlib; print(pathlib.Path(sys.executable).relative_to(pathlib.Path.cwd()))"
.venv/bin/python
$ python -c "import sys; print(sys.prefix == sys.base_prefix)"
False # біз орта ішіндеміз
$ python -m pip install requests
Successfully installed certifi-2026.7.22 charset_normalizer-3.5.1 idna-3.19 requests-2.34.2 urllib3-2.7.0
$ python -c "import requests; print(requests.__version__)"
2.34.2
$ python -m pip freeze > requirements.txt
$ cat requirements.txt
certifi==2026.7.22
charset-normalizer==3.5.1
idna==3.19
requests==2.34.2
urllib3==2.7.0
$ deactivate # ортадан шығамыз
$ python3 -c "import sys; print(sys.prefix == sys.base_prefix)"
True # қайтадан жүйедеміз
$ python3 -c "import requests"
Traceback (most recent call last):
File "<string>", line 1, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
$ printf '.venv/\\n__pycache__/\\n' > .gitignore
$ du -sh .venv
17M .venv
Патч-нұсқаның нөмірі, кітапханалардың нұсқалары мен .venv көлемі сізде басқаша болады: олар ай сайын өзгеріп тұрады. Маңыздысы сандардың өзі емес, не болып жатқаны.
Windows-та командалардың бір бөлігі басқаша көрінеді. Python командалары сол күйінде; жүйеге жүгінетіндері ғана өзгеше:
| Не істейміз | Windows PowerShell | macOS және Linux |
|---|
| тілді іске қосамыз | py | python3 |
| орта жасаймыз | py -m venv .venv | python3 -m venv .venv |
| ортаға кіреміз | .venv\Scripts\Activate.ps1 | source .venv/bin/activate |
| файлдарды қараймыз | Get-ChildItem -Force | ls -a |
| .gitignore жазамыз | Set-Content .gitignore ".venv/n__pycache__/"|printf ‘.venv/\n__pycache__/\n’ > .gitignore| | қалта көлемін қараймыз |(Get-ChildItem .venv -Recurse | Measure-Object Length -Sum).Sum/1MB|du -sh .venv` |
PowerShell-де алғашқы активация сценарийлерді орындауға тыйымға тірелуі мүмкін. Бір рет емделеді: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned, бұл venv құжаттамасында айтылған.
Талдау
Алдымен тілдің бар-жоғын тексеріңіз
python3 --version — кез келген күннің бірінші командасы. Нөмірмен жауап берді — тіл тұр. «command not found» деді — орнатамыз:
- Windows: python.org-ты ашып, орнатқышты жүктеңіз, содан кейін бірінші экранда «Add python.exe to PATH» құсбелгісін міндетті түрде қойыңыз. Ұмытсаңыз — қайта орнатыңыз, бұл жөндеуден жылдам.
- macOS: python.org сайтынан орнатқышты алыңыз — ол алдын ала ештеңе орнатуды талап етпейді. Homebrew бұрыннан болса, дәл соны
brew install pythonістейді. Жүйеде бұрыннан тұрған Python-ды қозғамаған жөн: оны жүйенің өзі пайдаланады. - Linux: ол әлдеқашан бар шығар; болмаса —
sudo apt install python3 python3-venvнемесе жүйеңіздің пакет менеджері арқылы сол.
3.12-ден бастап кез келген нұсқа жарайды: 3.12 мен 3.13-те курстың барлық бағдарламасы компиляцияланатыны тексеріледі. Курс 3.14-те жазылып, өлшенді, ал Python-ның өз хабарламалары нұсқалар арасында сәл өзгеше — шығуыңыз сабақтан қатенің мәтінімен айырылса, себебі көбіне осы.
Орта деген не және ол неге жоба қалтасында тұр
python3 -m venv .venv жобаның ішінде .venv қалтасын жасайды. Ішінде — өз python-ы мен кітапханаларға арналған өз орны.
Шығыстағы .venv/bin/python жолы соны растайды: activate-тен кейін python сөзі жүйелік тілді емес, жобаңызда жатқанын білдіреді. Ештеңе «глобалды бапталған» жоқ — жай ғана жол өзгерді.
Елестетіп көріңіз. Ауладағы ортақ дәрі қобдишасының орнына көліктегі өз қобдишаңыз. Ортақта бірде бинт бітеді, бірде біреу мерзімі өткенін салып кетеді; өзіңіздікі әрқашан өзіңіз жинағандай.
Осының бәрі не үшін басталғанының дәлелі
Екі жұп жолға қараңыз.
Бірінші жұп — қай жерде тұрғаныңыз туралы. sys.prefix — интерпретатор жұмыс істейтін қалта, ал sys.base_prefix — жүйелік Python-ның қалтасы. Орта ішінде олар әртүрлі, сондықтан салыстыру False береді; deactivate-тен кейін — True. Бұл — ең сенімді тексеру: ол не орнатылғанына да, қабықтың шақыруына да тәуелді емес.
Екінші жұп — кітапхана туралы. Орта ішінде import requests жұмыс істейді, нұсқасы 2.34.2; сыртында сол импорт ModuleNotFoundError береді. Ескерту: requests бір кезде жүйеге орнатылған болса, сыртында импорт өтеді — бұл орта жұмыс істемейді дегенді білдірмейді. Ондайда бірінші тексеруге және python-ға апаратын жолға қараңыз.
Оқшаулау деген осы: кітапхана жүйеге емес, жобаға түсті. Енді көрші жобаны бұзатын ештеңе жоқ.
requirements.txt — орта қайта жиналатын тізім
pip freeze ортада тұрғанның бәрін дәл нұсқасымен басып шығарады:
requests==2.34.2
urllib3==2.7.0
Біз мұны requirements.txt-ке сақтадық. Бір жылдан кейін, басқа машинада pip install -r requirements.txt сол нәрсені жинайды. Назар аударыңыз: сіз requests-ті ғана сұрадыңыз, ал тізім бес жолдан тұрады — қалғаны соның артынан келді, бұл қалыпты.
.venv-тің өзін репозиторийге салмайды: 17 мегабайт, әр жүйеде өзгеше, тізім бойынша бір командамен жиналады. Сондықтан біз .gitignore жасадық — сол екі жолдық:
.venv/
__pycache__/
Бірінші жол — орта туралы, екіншісі — Python скомпиляцияланған модульдерді салып қоятын, өзі жасайтын қалта туралы.
Жоба енді қалай көрінеді
$ ls -a
.gitignore .venv requirements.txt tsena.py
$ source .venv/bin/activate
$ python tsena.py | head -5
== Қазақстанда бағалар неше есе өсті
2010 жылғы баға индексі: 100.0
2025 жылғы баға индексі: 348.1
бағалар 3.48 есе өсті
2025 жылғы 1000 теңге = 2010 жылғы бағамен 287 теңге
Төрт ат, әрқайсысы өз орнында: код, тәуелділіктер тізімі, орта және репозиторийге не кетпейтіні туралы ереже. Кешегі бағдарлама жобадан іске қосылып, сол нәрсені басып шығарады.
Әрі қарай бұл қалта өседі — онда модульдер, дерекқор мен есеп пайда болады. Бірақ құрылым бүгін жасалды, оны өзгертудің қажеті болмайды.
Редактор
Кез келгені жарайды, бірақ таңдап отырсаңыз — VS Code және Microsoft-тың Python кеңейтімі. Бір баптау маңызды: төменгі оң жақ бұрышта интерпретаторды таңдаңыз — .venv ішіндегісін. Сонда редактор сізде шынымен тұрған кітапханалар бойынша ұсыныс береді, өзі ойлап тапқандары бойынша емес.
Тексеру оңай: tsena.py-ды ашып, «Run» басыңыз — бағдарлама терминалдағыдай жұмыс істеуі керек.
pip туралы бір ескерту
pip install командасын ортадан тыс ешқашан термеген жөн. Оның үстіне оны python -m pip деп жазған дұрыс: сонда пакет жүйеден табылған басқа біреуіне емес, дәл өзіңіз жұмыс істеп отырған интерпретаторға орнатылады. Қай жерде екеніңізге күмәндансаңыз — шақыруға қараңыз: белсендірілген ортада сол жақта (.venv) тұрады. Ол жоқ болса — алдымен source .venv/bin/activate (Windows-та: .venv\Scripts\Activate.ps1).
Сабақ картасы
Өз сөзіңізбен айтыңыз
Қарамай, дауыстап немесе қағазға жауап беріңіз. Жауаптар — сабақтың соңында.
- Ештеңе қайта орнатылмаса,
activateнақты нені өзгертеді? .venvнеге репозиторийде сақталмайды, алrequirements.txt— сақталады?- Ортадан тыс екеніңізді бір секундта қалай білуге болады?
Жаттығу
Тапсырмаға дейінгі үш қысқа қадам. Бүгін олар код туралы емес, терминал туралы: жаңадан бастаған адам кешін жоғалтатын жер де осы. Жауаптары — сабақтың соңында.
1. Болжаңыз. Ортаны жинадыңыз да, оны белсендірген жоқсыз. which python3 (Windows-та — where python) не көрсетеді, әрі одан кейін pip install requests пакетті қайда қояды?
2. Бос орынды толтырыңыз. Нөлден бастап жұмыс күні шығатындай етіп үш команданы толықтырыңыз:
python3 -m venv .venv
...
pip install -r requirements.txt
3. Жөндеңіз. Адам шағымданады: «requests орнаттым, ал бағдарлама ModuleNotFoundError дейді». Терминал шақыруында оның (.venv) дегені жоқ. Не болған, әрі оған не істеу керек?
Тапсырма
Міндетті. digest қалтасын жасаңыз, ішінде орта жасаңыз, кешегі бағдарламаны соған көшіріп, ортадан іске қосыңыз. Содан кейін ортаға requests-ті орнатып, шынымен сол ортада тұрғаныңызды тексеріңіз:
import sys
print(sys.executable) # сізді тыңдап тұрған питонның жолы
print(sys.prefix != sys.base_prefix) # True — сіз ортадасыз
Ортадан шығып (deactivate), сол екі жолды қайта іске қосыңыз: жол өзгереді, ал True False болады. Сенімді тексеру — осы. Ортаны импорт арқылы тексеруге болмайды: requests жүйеде де орнатулы болуы әбден мүмкін — сонда импорт сырттан да істейді де, сіз қате қорытынды жасайсыз.
Қалауыңызша.
.venvішінде не бар екенін қараңыз:ls .venv/lib/python3*/site-packages. Онда тізімдегі дәл сол бес пакет жатыр..venvқалтасын түгел өшіріп, қайта жинаңыз:python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt. Тізімнің толық екенін тексеру дегеніміз осы.requests-тің басқа нұсқасы бар екінші жоба жасап, біріншісінің одан өзгермегеніне көз жеткізіңіз.
Жобада бұл қайда тұрады
Шолу үй тапты. Әрі қарай жазғанымыздың бәрі digest қалтасында тұрады: бүгін онда бір бағдарлама мен тәуелділіктер тізімі, курстың соңында — модульдер, дерекқор, графиктер мен есеп.
Қарыздар. Бағдарлама әлі интернетсіз құлайды, әр іске қосылғанда деректі қайта алады. Біз дискіге әлі ештеңе сақтамаймыз — ал алынған, бірақ сақталмаған деректі қайта сұрауға тура келеді. Бұл — таяудағы сабақтар.
Жауаптар
Жауаптарды көрсету
Сұрақтарға
- Тек жолдарды.
activatePATH-та.venv/bin-ді бірінші қояды, сондықтанpythonсөзі жобадағы интерпретаторды, алpip— пакеттерді сол жерге орнатуды білдіре бастайды. Бұл кезде ешқандай орнату болмайды. - Өйткені
.venv— бір командамен қайта жиналатын, 17 мегабайт тартатын, жүйеге тәуелді нәтиже.requirements.txt— себеп: бес жол, олардан нәтиже кез келген машинада шығады. - Терминалдың шақыруына қарау керек: белсендірілген ортада сол жақта
(.venv)тұрады. Күмәндансаңыз —python -c "import sys; print(sys.executable)"бұл кімнің python-ы екенін көрсетеді.
Жаттығуға
-
which python3жүйелік Python-ды көрсетеді —/usr/bin/python3немесе соған ұқсас, бірақ.venvішіндегі жолды емес. Демек,pip install requestsжобаның сыртында жұмыс істейді. Пакетті нақты қайда қоятыны жүйеге байланысты: Linux-та соңғы кездері мұндай орнатуға көбіне тыйым салынады (externally-managed-environment), басқа жағдайда пакет пайдаланушының үй қалтасына не жүйеге түседі. Үш аяқталуда да ортақ бір нәрсе бар: пакетrequirements.txt-ке кірмейді, әрі жобаңызда болмайды. -
source .venv/bin/activate(Windows-та —.venv\Scripts\activate). Реті дәл осындай: алдымен орта жасалады, содан кейін оған кіреді, тек содан соң пакет орнатылады — әйтпесе олар жанынан өтіп кетеді. -
Пакет жүйеге орнатылған, ал бағдарлама ортада іске қосылған — немесе керісінше. Шақыруда
(.venv)жоқтығы — сабақтың үшінші сұрағының жауабы: ол бір секундта көрінеді. Ортаға кіріп, пакетті іші отырып қайта орнату керек.
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.