Мы уже знаем, что на текущую сессию интерпретатора изменение PYTHONPATH никак не повлияет. Но если вы запустите дочерний процесс, то он унаследует окружение текущего процесса, а значит и изменения в любых переменных будут на него влиять.
Вот небольшой пример:
Объявляем переменную
user@host:~$ export PYTHONPATH=/path1
Запускаем интерпретатор
user@host:~$ python3
Проверим что в sys.path
>>> import sys
>>> print(sys.path)
['', '/path1', '/usr/lib/...', ...]
Добавляем что-то в переменную
>>> import os
>>> os.emviron['PYTHONPATH'] = '/path1:/path2'
>>> print(sys.path)
['', '/path1', '/usr/lib/...', ...]
Изменений нет. Но давайте запустим дочерний процесс и посмотрим там
>>> os.system('python3')
# теперь мы находимся в другом процессе
>>> import sys
>>> print(sys.path)
['', '/path1', '/path2', '/usr/lib/...', ...]
Тоже самое будет и с subprocess, так как по умолчанию текущее окружение тоже наследуется.
>>> import subprocess
>>> subprocess.call(['python3', '-c', 'import sys;print(sys.path)'])
['', '/path1', '/path2', '/usr/lib/...', ...]
______________________
Лучшей практикой является передача энвайронмента явно через аргумент env!
import subprocess
subprocess.call(cmd, env={'PYTHONPATH': '...'})
Это поможет точно понимать какое окружение будет у запускаемого процесса и при этом не изменять окружение текущего процесса.
#basic
🤖Вышла вторая Beta Android 16 QRP2
Осенний фича релиз Android 16 всё ближе и вышла следующая бета с новыми возможностями:
👉 Platform Stability - API больше меняться не будет и можно заливать в Google Play в Beta/Alpha каналы
👉 Специальный режим установки приложения через ADB, чтобы разработчики могли тестировать приложения с вводом системы верификации разработчиков:
adb shell pm set-developer-verification-result
👉 Новый сборщик мусора. ART теперь будет поставляться с Generational Concurrent Mark-Compact (CMC) Garbage Collector, которые фокусируется на сборке новых объектов, которые обычно и чистятся. Ожидается снижения потребления CPU ресурсов и потребление заряда батареи.
👉 Встроенные счетчик количества шагов в Health Connect. Приложения смогут получить эти данные, если у них есть разрешение READ_STEPS.
Чтобы проверить наличие API из Android 16 QRP2 надо вызвать новое API
if (Build.VERSION.SDK_INT_FULL >=
Build.VERSION_CODES_FULL.BAKLAVA_1) {
// Вызываем APIs из Android 16 QPR2
}
Релиз обновленной версии Android 16 ожидается в ноября 2025
#android16
🤯Google придумала новый способ давления на разработчиков
Теперь если в приложении не добавили тёмную тему, то пользователь сам принудительно сделает её включение через системные настройки. Это приведёт к инверсии цветов.
Наконец-то Google поняла что разработчики иногда забивают на тёмную тему, обязать их не получается (ну почему через Google Play не обязать?).
Видно так решила Google:
Будем форсировать фичи и пусть пользователи жалуются и занижают рейтинг приложения в магазине
Странно, что на рекламной графике использовали приложение FitBit, хотя в нем есть нативная темная тема, да и сам продукт принадлежит Google. В FitBit нет тёмной темы. Да и не удивился - худшее спортивное приложение, что я использовал 😞
#android16
🤖Вышла первая Beta второго квартального обновления Android 16
С релиза Android 16 Google перешла на новый цикл обновлений Android - раз в квартал. Нас ждут новые фичи и API для разработчиков
Чтобы проверить наличие SDK надо использовать новый способ проверки
// Проверяем версию API через новое API для проверки версии SDK
if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1)
Что нового:
👉 Принудительный перевод светлых приложений в темные. Делается инверсия цветов
👉 Система будет делать иконки приложений автоматически тематически (монохромная версия, покрашенная в цвета системы)
👉 Приложения смогут переопределить системный UI шаринга, чтобы оставаться интерактивными
👉 Добавили возможность реализации переноса данных между Android и iOS версий приложения
👉 PDF в Android SDK теперь поддерживает редактирование и аннотации. На основе этого API будет работать Jetpack PDF библиотека
👉 Display Topology API - новое API для получения информации при работе с несколькими экранами о их положении - границы и относительное размещение.
👉 Тайлы в быстрых настройках теперь должны относится к одной из стандартных категорий
👉 Больше возможностей для управления Haptic Feedback
👉 Много новых Media API (подробности отдельным постом)
👉 Улучшения управлением компаньон устройств (подробности отдельным постом)
👉 Улучшение безопасности и приватности (подробности отдельным постом)
👉 Улучшения API для разработчиков (подробности отдельным постом)
Релиз стабильной версии ожидается в 4 квартале (ориентировочно ноябрь 2025). Уже доступа первая Beta версия для Google Pixel. Подробнее про изменения читайте на сайте Android Developers
#android16
🤖Android 16 вышел официально!!!
Что нового
👉 Новый график релиза версий Android
👉 Обязательный Edge-to-edge
👉 Live Updates уведомления
👉 Все приложения принудительно растягиваются на больших экранах
👉 Лучшая производительность и время жизни батареи
Обзор всех изменений можно найти в канале по тегу #android16 (кликайте на сам тег)
🤖Вышла Android 16 Beta 4
Вышла последняя Beta версия Android 16. Никаких изменений в API для разработчиков нет, только доработки и улучшения в ОС.
Следующий релиз будет финальным. Ставлю на то, что это сделают анонс на Google I/O.
#android16
Local Network Protection (LNP) - Новая фича для будущего Android. Позволит пользователю контролировать какие приложения могут иметь доступ в локальную сеть. Появится новое Runtime Permission, но потом. Разработчики уже могут потестировать через вызовы shell команд
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
#android16
Фон под текстом для обеспечения лучшей контрастности и читаемости - новая фича Android 16. Пользователь сможет включать в настройках, а разработчики узнать о статусе через Accessibility API
#android16
🤖Появился новый Intent для съёмки Motion Photo
val intent = Intent(MediaStore.ACTION_MOTION_PHOTO_CAPTURE)
// или MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE
// Задаем куда сохранить
intent.putExtra(MediaStoreEXTRA_OUTPUT, uri)
// или Uri через ClidData
intent.setClipData(clipData)
context.startActivity(intent)
#android16
🤖Вышла вторая Beta Android 16
Вышла вторая из четырёх Beta версий Android 16. Улучшили работу с медиа, новые возможности Camera2 API, форсирование Edge-to-edge и другие. Как всегда расскажу отдельными постами про самые интересные фичи
#android16
Android 16 Beta 1: Предиктивный жест назад для трёхкнопочной навигации и приложения Обои и Стиль.
При использовании системной навигации с тремя кнопками теперь можно будет увидеть анимацию предиктивного жеста назад. Для этого необходимо зажать кнопку назад. При этом вы также можете отменить это действие просто переместив палец в другую часть экрана, но не отрывая палец от дисплея.
Также теперь поддержку предиктивного жеста назад получило системное приложение Обои и стиль.
#Android16
😎Google News | Ru
Notification Live Updates в Android 16
Добавили новый стиль уведомлений - ProgressStyle, который позволяет задать текущий прогресс, иконки для начала, конца и текущей позиции, добавлять разные сегменты и точки.
Подробности по новому типу уведомлений читайте тут
Рекомендуется интегрировать приложениям в сфере доставки и навигации. Пишите свои комментарии каким категориям приложений еще подойдет
#android16