Практическая проверка Python 3.15 RC1: как проверить package startup .start Python 3.15 и мигрировать исполняемый import из pth без изменения sys.path. Изолированный fixture, отрицательный контроль, заранее заданный критерий и безопасный пакет диагностики.
Разделите путь и исполняемый код
PEP 829 вводит .start с entry point вида pkg.mod:callable; наличие парного .start отключает import-lines в соответствующем .pth, но сохраняет path-extension строки. Это подтверждает только границу функции, а не наличие проблемы в конкретном проекте. Практический симптом уже: Пакет полагается на код из .pth до первой строки приложения, и после добавления .start часть пути может сохраниться, а часть инициализации исчезнуть или выполниться в другом порядке. До изменения кода зафиксируйте версию runtime, способ установки, один ожидаемый результат и один отрицательный исход. RC1 остаётся предварительным выпуском: его проверяют в отдельной среде, не ставят поверх рабочего interpreter и не используют один удачный запуск как разрешение на migration.
Чистый venv с двумя marker
Рекомендуемый fixture: создать отдельный venv и тестовый dist-info с .pth, добавляющим temp-каталог и пишущим marker, затем парный .start с одной именованной callable; запускать только без рабочих site-packages. Дайте ему метку T23-07, отдельный temp root и короткий deadline. Входы должны быть синтетическими, повторяемыми и минимальными; каждый новый запуск получает новые объекты и процесс, если cache или global state способны изменить наблюдение. До опыта запишите точную команду и ожидаемый class результата. Не включайте рабочие конфиги, адреса, токены, персональные строки, production PID или полные environment dumps.
Четыре состояния startup
Опровергающий маршрут: снять четыре состояния: нет файлов, только .pth, .pth плюс .start, повреждённый entry point; для каждого проверить sys.path, marker, stderr и код выхода в новом процессе. Собирайте строки формата «набор startup-файлов | path добавлен | import-line исполнена | callable вызвана | порядок marker | ошибка запуска». Порядок control A, target B, fresh control A2 обнаруживает загрязнение fixture: если A2 расходится с A, итог нельзя помечать passed. Пустое поле не равно нулю, отсутствие exception не доказывает правильную семантику, а изменение двух параметров сразу лишает опыт диагностической силы. Соседние причины получают отдельные строки, а не удобное общее объяснение.
Порядок и дублирование
Зелёный критерий сформулирован заранее: path-extension остаётся предсказуемым, callable выполняется ровно в ожидаемой ветке, а старый import-line не дублирует действие при парном .start. Ветка not reproduced означает только отсутствие симптома в этой версии fixture; blocked означает нехватку capability или источника; failed control возвращает расследование к стенду. Стоп-линия: {item['stop']}. Нельзя добиваться зелёного результата отключением проверки, broad except, ростом лимита, повторением до случайного успеха или подменой предварительного release стабильным обещанием. После теста удаляются только созданные temp-ресурсы.
Инвентаризация до удаления .pth
Для maintainer или поддержки подготовьте: дерево временного venv, содержимое двух синтетических startup-файлов, sys.path diff с сокращёнными корнями и коды выхода без списка реальных пакетов. Добавьте label T23-07, московский timestamp, точную версию RC и формулировку критерия «path-extension остаётся предсказуемым, callable выполняется ровно в ожидаемой ветке, а старый import-line не дублирует действие при парном .start». Секреты, IP, hostnames, usernames, абсолютные домашние пути и полные логи удалите. Официальные источники подтверждают изменение «PEP 829 вводит .start с entry point вида pkg.mod:callable; наличие парного .start отключает import-lines в соответствующем .pth, но сохраняет path-extension строки.», но не подтверждают результат вашего теста, частоту проблемы или необходимость менять production. Такой пакет позволяет воспроизвести одну ветку, не раскрывая данные и не смешивая её с соседними issues.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.
Источники и проверка
- Python 3.15.0rc1 release проверено 2026-08-29
- What’s New in Python 3.15 проверено 2026-08-29
- PEP 829 — Package Startup Configuration Files проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.