Что такое формат файла PTH?
Файл .pth - это текстовый файл конфигурации путей, обрабатываемый встроенным модулем Python site при запуске интерпретатора. Каждая строка в файле представляет собой либо путь к каталогу для добавления в sys.path, либо оператор import для выполнения в качестве кода Python. Пустые строки и строки, начинающиеся с #, обрабатываются как комментарии и игнорируются.
Файлы .pth должны быть размещены в каталоге, который сканирует модуль site - обычно это site-packages или dist-packages, - чтобы Python находил их автоматически при запуске интерпретатора. Менеджеры пакетов, такие как pip и conda, используют файлы .pth для регистрации установленных пакетов в путях Python без изменения самой установки интерпретатора.
Формат остается стабильным со времен Python 1.5.2 (1999 г.) и не содержит информации о версии. Файлы представляют собой обычный текст в кодировке UTF-8 (или ASCII), обычно состоящий всего из нескольких строк и имеющий размер менее 1 КБ.
Важное примечание по безопасности: поскольку строки, начинающиеся с import, выполняются как код Python при каждом запуске, вредоносный файл .pth, помещенный в site-packages, обеспечивает постоянное выполнение кода - это известный вектор внедрения в скомпрометированных системах.
Обратите внимание, что расширение .pth также используется библиотекой PyTorch для сериализованных контрольных точек моделей - это бинарный формат, совершенно не связанный с конфигурацией путей Python. Расположение и содержимое файла являются надежным способом отличить эти два варианта использования.
Безопасность и защита
РИСК: MEDIUMФайл Python .pth является текстовым и не может запускаться сам по себе. Однако строки, начинающиеся с «import», выполняются как код Python при каждом запуске Python. Вредоносный файл .pth, помещенный в site-packages, является известным методом закрепления/внедрения кода в скомпрометированных системах. Если вы обнаружите неожиданный файл .pth в каталоге site-packages вашего Python, проверьте его содержимое, прежде чем доверять ему. В исправной системе все файлы .pth должны соответствовать легитимно установленным пакетам.
Детали формата
в двух словах- PyTorch Model Checkpoint - PyTorch по традиции сохраняет словари состояний моделей как файлы .pth (бинарный формат Pickle/ZIP); это конфликтует с собственными файлами путей Python .pth, поэтому сейчас предпочтительным является расширение .pt.
- VisualGPSXP Path File - VisualGPSXP (устаревшая утилита GPS для Windows) сохраняла пути треков GPS как .pth; программное обеспечение устарело, и такое использование встречается крайне редко.
Программы, открывающие файлы PTH
Технические подробности
глубокая спецификация| Кодировка | Обычный текст, UTF-8 или ASCII |
| Контейнер | Обычный текст (без обертки или бинарной структуры) |
| Синтаксис строк | Одна запись на строку: путь к каталогу, оператор «import <module>», пустая строка или комментарий «#» |
| Триггер обработки | Модуль Python «site» считывает все файлы .pth в site-packages / dist-packages при каждом запуске интерпретатора |
| Влияние на sys.path | Каждая строка с допустимым каталогом добавляется в sys.path, что делает его пакеты доступными для импорта без явных манипуляций с путями |
| Выполнение строк import | Строки, начинающиеся с «import», выполняются как код Python при запуске - риск закрепления/внедрения в скомпрометированных системах |
| Типичный размер файла | Менее 1 КБ (обычно 1-10 строк) |
| Сигнатура файла | Отсутствует - обычный текст без магических байтов или бинарного заголовка |
| MIME-тип | text/plain |
| Требуемое расположение файла | Должен находиться в каталоге, сканируемом модулем site: site-packages, dist-packages или корень установки Python |
| Стабильность формата | Не менялся с версии Python 1.5.2 (апрель 1999 г.); нет поля версии; полная обратная совместимость |
| Связанные ОС | Windows, macOS, Linux - везде, где работает Python |
| Конфликт имен | .pth также используется PyTorch для бинарных файлов контрольных точек моделей - совершенно другой формат, различаемый по содержимому и расположению |
| Выпущен | Python 1.5.2 (1999) - site module formalised .pth processing |
| Последняя версия | No versioning - format unchanged; behaviour documented in Python 3 'site' module |
| Открыть стандартное | Да · без роялти |
| Спецификация | docs.python.org |
Конвертации PTH
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах PTH.