Python: деректен өз есебіңізге дейін 55-сабақ (барлығы 56)
Тәуелділіктер: «менде істейді» емес, қайталанатын орта
Python курсының елу төртінші сабағы. Тікелей тәуелділіктерді толық lock-файлдан бөліп, Python нұсқасын бекітеміз және бір жылдан кейін де қайта жиналатын таза орта құрамыз.
Бұл не үшін керек
pip install pandas бүгін және бір жылдан кейін pandas пен оның тәуелділіктерінің әртүрлі нұсқасын орнатуы мүмкін. Код өзгермесе де, нәтиже не API өзгереді. Қайталанатын ортада Python нұсқасы, барлық пакеттің дәл нұсқасы және нөлден тексеру пәрмені белгілі.
Екі тізімнің міндеті бөлек
Адам requirements.in файлына тек тікелей тәуелділіктерді жазады:
pandas>=3.0,<3.1
matplotlib>=3.11,<3.12
jsonschema>=4.26,<5
Құрал одан нақты тікелей және жанама нұсқалары бар requirements.txt жасайды:
python -m pip install pip-tools==7.6.1
python -m piptools compile --generate-hashes requirements.in
python -m piptools sync requirements.txt
Екі файл да Git-те сақталады: біріншісі жаңарту ниетін, екіншісі нақты жинақты көрсетеді. Хэш пакет файлының жасырын ауысуын тежейді, бірақ пакеттің өзі қауіпсіз екенін дәлелдемейді.
Python нұсқасы да тәуелділік
.python-version файлы:
3.14
pyproject.toml қолдау ауқымын көрсетеді:
[project]
requires-python = ">=3.12,<3.15"
Бірінші мән жоба ортасын таңдайды, екіншісі уәде етілген ауқымды сипаттайды. CI сол ауқымды тексеруі керек.
Таза ортада тексеру
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install --require-hashes -r requirements.txt
python -m pytest -q
python -m mypy --strict sholu main.py
python main.py --offline --dry-run
Windows-та белсендіру пәрмені: .venv\Scripts\activate. python -m pip пакетті дәл таңдалған интерпретаторға орнатады.
pip freeze нені көрсетеді
python -m pip freeze
pip freeze қазір орнатылған пакеттерді көрсетеді. Бұл — диагностика және таза ортадан алғашқы сурет алу тәсілі. Ескі ортада ол автордың кездейсоқ құралдарын да қосып, қай тәуелділік тікелей екенін түсіндірмейді. Сондықтан ол мағыналы requirements.in файлын алмастырмайды.
Жаңарту — бөлек жұмыс
Lock-файлды саналы жаңартыңыз: ауқымды өзгертіңіз, файлды қайта құрыңыз, diff оқыңыз, тесттерді орындаңыз. Тәуелділік жаңартуын функционалдық өзгеріспен араластырмаңыз. Токен мен құпиясөзді requirements, Git адресі немесе .env.example ішінде сақтамаңыз.
Сабақ картасы
Тірек белгі: Python + requirements.in → хэші бар lock → таза орта → тесттер.
Өз сөзіңізбен айтыңыз
requirements.inменrequirements.txtнесімен бөлек?- Неге тек тікелей пакеттерді бекіту жеткіліксіз?
pip freezeшын мәнінде нені көрсетеді?- Жобаны таза ортада неге жинаймыз?
Жаттығу
1. Болжаңыз. Қай жазба жинақты дәлірек қайталайды?
choices = ["pandas", "pandas>=3", "pandas==3.0.5"]
print(choices[-1])
2. Модульдік іске қосуды толтырыңыз.
python ... pip freeze
3. Үдерісті түзетіңіз. Әзірлеуші lock-файлды жаңартып, тесттерді іске қоспады.
Тапсырма
Міндетті. Таза орта, requirements.in, хэші бар lock-файл және .python-version жасаңыз. --require-hashes арқылы орнатып, тесттер мен mypy орындаңыз.
орта: қайталанады
тесттер: өтті
типтер: өтті
Өз жобаңызда. Ескі және таза ортадағы pip freeze нәтижесін салыстырып, артық жолдарды түсіндіріңіз.
Қосымша. Автоматты жаңарту ұсынысын баптаңыз, бірақ біріктіруді тест пен diff тексеруінен кейін ғана жасаңыз.
Бұл жобаның қай жеріне кіреді
29-қадам кіріс тізімін, lock-файлды, Python нұсқасын және бір тексеру сценарийін алады. Соңғы сабақта осы тексерілген сурет жарияланатын артефакт болады.
Жауаптар
Жауаптарды көрсету
.inтікелей ниетті,.txtтолық нақты графты сақтайды.- Жанама тәуелділік те мінез-құлықты өзгерте алады.
- Жоба ойын емес, ағымдағы ортаның күйін.
- Жасырын пакет пен автор компьютеріне тәуелділікті табу үшін.
pandas==3.0.5
-mкерек.
command = "python -m pip freeze"
print(command)
python -m pip freeze
- Таза орнату, тесттер,
mypyжәне offline тексеру орындаңыз.
checks = ["install", "pytest", "mypy", "offline"]
print(" -> ".join(checks))
install -> pytest -> mypy -> offline
Дереккөздер
- Python: installing packages — орта және pip.
- pip-tools — тәуелділіктерді жинау және теңестіру.
- pip: repeatable installs — нұсқа мен хэшті бекіту.
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.