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, щоб не пропустити жодної публікації!