ProIT: медіа для профі в IT
2 хв

У Python з’явився єдиний формат lock-файлів: що передбачає PEP 751

author avatar ProIT NEWS

Python отримав офіційний стандарт для lock-файлів: PEP 751 затверджено, і він описує новий формат pylock.toml для збереження залежностей Python-проєктів, повідомляє Info World. Мета — забезпечити відтворювану інсталяцію залежностей незалежно від середовища, у якому запускається код.

Хоча у спільноті існують інструменти на зразок pip freeze, Poetry або uv, Python досі не мав офіційного механізму фіксації залежностей і розв’язання конфліктів. Новий формат має усунути цю прогалину.

Що таке lock-файл і навіщо він потрібен

Lock-файли потрібні для того, щоб уніфікувати встановлення залежностей, незалежно від того, на якому пристрої чи в якій ОС виконується проєкт.

У типовому сценарії lock-файл містить:

список усіх залежностей проєкту;
конкретні версії;
джерела (включно з Git або PyPI);
хеші для перевірки цілісності;
специфікації середовища (версія Python, платформи тощо).

Це дає можливість уникнути конфліктів між залежностями. Наприклад, якщо одна бібліотека (fixthis) вимагає fixerupper==1.5, а інша (fixthat) — fixerupper>=2.0, вони не можуть співіснувати. Завдяки lock-файлу можна зафіксувати перевірене й сумісне поєднання або повідомити про неможливість його створити.

Що змінює PEP 751

PEP 751 пропонує новий стандарт — pylock.toml, що базується на форматі TOML, як і pyproject.toml.

Цей файл може містити:

версію стандарту lock-файлу;

цільову версію Python;

маркери середовища (environment markers);

деталі про кожен пакет: версія, хеш, джерело (включно з VCS), формат дистрибутиву;

залежності для різних платформ (наприклад, окремі wheels для Windows і Linux).

У PEP 751 є приклад pylock.toml, де пакет numpy має різні джерела для Windows і Linux. Кожна залежність оформлена як окремий блок [[packages]] зі своїми метаданими.

Коли з’явиться підтримка pylock.toml

Станом на квітень 2025 року жоден офіційний або сторонній інструмент ще не підтримує pylock.toml. У майбутніх оновленнях pip та інших менеджерів очікується поступове додавання підтримки цього формату.

Очікується, що:

інструменти зможуть автоматично генерувати pylock.toml (як pip freezerequirements.txt);

користувачам не доведеться створювати цей файл вручну;

формат стане частиною стандартного пайплайну Python-проєктів, особливо тих, які публікуються на PyPI.

Чи замінить pylock.toml усі інші lock-файли?

Поки що ні. Деякі інструменти, зокрема uv, вже заявили, що:

підтримуватимуть pylock.toml для імпорту й експорту;

зберігатимуть власний внутрішній формат lock-файлів, оскільки не всі можливості поки реалізовані у стандарті PEP 751.

Проте ці функції можуть з’явитися у майбутніх версіях специфікації, тоді й можлива повна інтеграція.

Читайте також на ProIT: 11 сучасних мов програмування, які варто вивчити вже зараз.

Підписуйтеся на ProIT у Telegram, щоб не пропустити жодної публікації!

Приєднатися до company logo
Продовжуючи, ти погоджуєшся з умовами Публічної оферти та Політикою конфіденційності.