Наверняка вы замечали, что в Python есть удобная функция для получения переменной окружения
os.getenv(NAME)
И её "сестра" для создания или изменения переменных окружения
os.putenv(NAME, VALUE)
Но почему-то putenv() не работает как должно. Энвайромент не обновляется!
os.putenv('MYVAR', '1')
print(os.getenv('MYVAR'))
... и ничего 😴
Почему так?
На самом деле энвайромент обновляется, но это значение не добавляется в словарь os.environ.
Откройте исходник функции os.getenv(). Это просто шорткат для os.environ.get()
В то время как putenv() это built-in С-функция.
Словарь os.environ (или точней класс из MutableMapping) создаётся из энвайромента в момент инициализации. Функция putenv() самостоятельно его не изменяет.
В тоже время, когда вы создаёте или изменяете ключ в os.environ, автоматически вызывается putenv() в методе __setitem__().
То есть, технически putenv() всё делает верно, но в os.environ это не отражается. Можно проверить так:
>>> os.putenv('MYVAR', '123')
>>> os.system('python -c "import os;print(os.getenv(\'MYVAR\'))"')
123
Я объявил переменную в текущем процессе и вызвал дочерний процесс, который её унаследовал и получил в составе os.environ.
Аналогично при удалении переменной вызывается еще одна built-in функция unsetenv(), удаляющая переменную из системы.
Итого
▫️ Удобней всего явно обновлять переменные через os.environ
▫️ Есть способ неявно создать/удалить переменную через putenv/unsetenv, что не повлияет на os.environ но изменит энвайромент и передаст изменения сабпроцессам. Но так лучше не делать!
▫️os.environ это просто обертка для built-in функций putenv() и unsetenv().
#basic
Apple宣布首席运营官职位交接
Apple 今日 宣布 ,首席运营官 Jeff Williams 将于本月晚些时候正式交接其职责,由现任运营高级副总裁 Sabih Khan 接任。这是公司早已规划好的继任安排。Jeff Williams 仍将继续向 Apple CEO Tim Cook 汇报工作,负责领导 Apple 的顶级设计团队以及 Apple Watch 和健康相关项目。在 Williams 计划于今年晚些时候退休后,Apple 的设计团队将直接向 Tim Cook 汇报。
在 Apple 任职期间,Jeff Williams 建立并完善了全球供应链,支持了 Apple 在全球范围内的业务拓展,包括美国、中国、印度、日本及整个东南亚地区。他还主导了供应商责任工作,为全球员工提供培训和教育项目,提高行业标准。Williams 是 iPod 和 iPhone 项目的关键推动者。他十多年前着手推动 Apple Watch 的开发,并构建了 Apple 的健康战略,帮助用户过上更健康的生活,更好地了解自身健康并获得关键的医疗支持。近年来,他还一直领导 Apple 的顶级设计团队。
#AppleNewsroom
📮 频道 @AppPie
隆重推出 Apple Sports,一款专为体育迷打造的新应用
🔗Apple Newsroom
Apple 今天推出了 Apple Sports,这是一款适用于 iPhone 的免费应用程序,它为体育迷们提供实时比分、统计数据等信息。该应用以速度和简便性为设计宗旨,为用户提供了个性化体验,将他们最喜爱的联赛和球队放在了显著位置,且拥有 Apple 设计的易用界面。Apple Sports 现在已经可以在美国、英国和加拿大的 App Store 中下载。
#AppleNewsroom
📮 频道 @AppPie
Apple 在 iPhone 15 Pro 上推出拍摄空间视频的功能
🔗Apple Newsroom (中国大陆)
更新至 iOS 17.2 后,iPhone 15 Pro 和 iPhone 15 Pro Max 用户现在即可开始录制空间视频——利用这项开创性的全新功能捕捉生活中的宝贵时刻 —— 稍后在 Apple Vision Pro 上重温这些暖心回忆。
#AppleNewsroom
📮 频道 @AppPie
Mac 与 iPad 版 Final Cut Pro 迎来重大升级
🔗Apple Newsroom (中国大陆)
Apple 今日宣布对 Mac 与 iPad 版 Final Cut Pro 进行升级,带来简化工作流的强大新功能。Final Cut Pro 改进时间线导览与归整体验,同时新增简化复杂编辑的新方式。这两个版本的 app 利用 Apple 芯片的强大能效表现,推出对象跟踪器的全新机器学习模型,搭载多个媒体处理引擎的 Mac 机型导出速度大幅提升。iPad 版 Final Cut Pro 推出新功能,进一步提升便携多点触控编辑体验,包括旁白录音功能、扩展的 app 内内容选项、新增调色预设与工作流提升等。上述 Final Cut Pro 更新将于本月晚些时候在 App Store 推出。
#AppleNewsroom
📮 频道 @AppPie