Це завдання робиться в терміналі, а не в зошиті. Заведи для нього окрему теку — хай буде
dz17/ — і всі команди виконуй, стоячи в ній. Кожен рівень просить зберегти щось у файл:
так у тебе лишиться власний конспект команд, до якого можна повернутися через півроку.
Інтернет тут знадобиться лише на другому рівні, і лише для одного маленького пакета.
рівень 1Рівень 1 — База
Створи середовище й переконайся, що воно справді відокремлене.
- Створи теку
dz17/, зайди в неї, виконайpython3 -m venv .venv. - До активації запиши у файл
sposterezhennya.mdвивід трьох команд:which python3(Windows:where python),python3 -c "import sys; print(sys.prefix)",python3 -c "import sys; print(sys.path)". - Активуй середовище. Переконайся, що в запрошенні з'явився префікс
(.venv). - Після активації запиши вивід тих самих трьох команд, а ще додай
which python— без трійки. - Виконай
deactivateі перевірwhich pythonще раз. - Під кожним блоком напиши одне речення: що саме змінилося й чому — з посиланням на PATH.
Зроблено, якщо: у sposterezhennya.md є три блоки виводу (до, після, після deactivate),
у другому блоці sys.prefix вказує на теку dz17/.venv, а в поясненні названо, що
активація зсунула PATH, і жодного слова про «режим Python».
рівень 2Рівень 2 — Плюс
Тепер справжній пакет і справжній requirements.txt.
- В активованому середовищі постав будь-який маленький пакет із PyPI — наприклад
python-dateutilабоrequests. - Виконай
pip listіpip show <пакет>. Випиши уsposterezhennya.mdрядокLocationі поясни, чому там саме цей шлях. - Порахуй: скільки пакетів у
pip listі скільки ти ставила руками. Поясни різницю. - Зроби
pip freeze > requirements.txtі подивись на файл. Скільки в ньому рядків? - Створи друге середовище
.venv2, активуй його й відтвори стан однією командоюpip install -r requirements.txt. Порівняйpip listобох середовищ. - Створи
.gitignoreіз трьома рядками з лекції.
Зроблено, якщо: pip list в обох середовищах дає однаковий набір пакетів однакових
версій, у sposterezhennya.md пояснено, звідки взялися зайві рядки у freeze
(залежності залежностей), а .gitignore приховує .venv/, .venv2/ і __pycache__/.
рівень 3Рівень 3 — Виклик
Відтвори конфлікт версій з інтерактиву 1 — по-справжньому, на власній машині.
- Обери пакет, у якого є щонайменше дві помітно різні версії (підійде будь-який
із довгою історією релізів). Подивись список версій командою
pip index versions <пакет>або на сторінці пакета на PyPI. - Зроби два середовища:
env_stareіenv_nove. У перше постав стару версію через==, у друге — нову. - Напиши маленький скрипт
perevirka.py, який імпортує пакет і друкуєпакет.__version__та шляхпакет.__file__. - Запусти той самий файл двома інтерпретаторами, без жодної активації:
env_stare/bin/python perevirka.pyіenv_nove/bin/python perevirka.py. - Збережи обидва виводи у
konflikt.md. Поясни двома-трьома реченнями, чому один і той самий файл дав різний результат — назвиsys.prefixіsite-packages. - Додатково: спробуй поставити другу версію в те саме середовище й простеж, що зробить pip зі старою. Запиши, що він надрукував.
Зроблено, якщо: у konflikt.md є два виводи з різними номерами версій і різними шляхами
__file__, є пояснення через sys.prefix, і є доказ із пункту 6, що в одній теці
друга версія витісняє першу, а не лягає поруч.
Підказки
- Не вгадуй, який python запустився — спитай:
which python(Windows:where python). Один рядок відповідає на половину питань «чому воно ставиться не туди». - Прямий шлях замість активації.
.venv/bin/python -m pip listпрацює завжди й не залежить від того, що ти встигла активувати. У четвертому пункті третього рівня це принципово: активація там заборонена навмисно. - Якщо PowerShell лається
running scripts is disabled— це не про Python. Один раз виконайSet-ExecutionPolicy -Scope CurrentUser RemoteSigned. - Якщо
pip installкажеexternally-managed-environment— ти забула активувати середовище й потрапила в системний Python. Не шукай прапорців, просто активуй. - Перейменувала теку проєкту й усе зламалось? Так і має бути: всередині
.venvзаписані абсолютні шляхи. Видали теку середовища й створи заново —requirements.txtповерне все за одну команду. Це і є перевірка, що файл залежностей у тебе правильний. - Теки
.venvу домашню роботу не здаються. Здаєтьсяrequirements.txt,.gitignoreі твої два файли з поясненнями.