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 freeze
— requirements.txt
);
• користувачам не доведеться створювати цей файл вручну;
• формат стане частиною стандартного пайплайну Python-проєктів, особливо тих, які публікуються на PyPI.
Чи замінить pylock.toml усі інші lock-файли?
Поки що ні. Деякі інструменти, зокрема uv
, вже заявили, що:
• підтримуватимуть pylock.toml
для імпорту й експорту;
• зберігатимуть власний внутрішній формат lock-файлів, оскільки не всі можливості поки реалізовані у стандарті PEP 751.
Проте ці функції можуть з’явитися у майбутніх версіях специфікації, тоді й можлива повна інтеграція.
Читайте також на ProIT: 11 сучасних мов програмування, які варто вивчити вже зараз.
Підписуйтеся на ProIT у Telegram, щоб не пропустити жодної публікації!