ТРЕБОВАНИЯ К СВИДЕТЕЛЬСТВУ О РЕГИСТРАЦИИ ТРАНСПОРТНОГО СРЕДСТВА \ КонсультантПлюс
- Главная
- Документы
- ТРЕБОВАНИЯ К СВИДЕТЕЛЬСТВУ О РЕГИСТРАЦИИ ТРАНСПОРТНОГО СРЕДСТВА
Приказ МВД России от 23.04.2019 N 267 (ред. от 28.09.2020) «Об утверждении форм документов, идентифицирующих транспортное средство, и требований к ним» (вместе с «Требованиями к паспорту транспортного средства», «Требованиями к свидетельству о…
Приложение N 4
к приказу МВД России
от 23.04.2019 N 267
Список изменяющих документов
(в ред. Приказа МВД России от 28.09.2020 N 676)
1. Свидетельство о регистрации транспортного средства <1> изготавливается на бумажной основе и представляет собой один лист размером 74 x 105 мм, имеющий лицевую и оборотную стороны, относится к специальной продукции, необходимой для допуска транспортных средств и водителей к участию в дорожном движении, имеет учетный номер, а также полиграфические защитные элементы с установленным уровнем защиты от подделки <2>.
———————————
<1> Далее — «свидетельство».
<2> Приказ МВД России от 27 апреля 2002 г. N 390 «О разработке и утверждении образцов специальной продукции, необходимой для допуска транспортных средств и водителей к участию в дорожном движении» (зарегистрирован в Минюсте России 18 мая 2002 года, регистрационный N 3451) с изменениями, внесенными приказами МВД России от 8 августа 2005 г. N 655 (зарегистрирован в Минюсте России 2 сентября 2005 года, регистрационный N 6978), от 2 сентября 2009 г. N 685 (зарегистрирован в Минюсте России 13 октября 2009 года, регистрационный N 15015), от 15 августа 2012 г. N 792 (зарегистрирован в Минюсте России 27 сентября 2012 года, регистрационный N 25550).
2. Оформление свидетельства производится подразделениями Государственной инспекции безопасности дорожного движения Министерства внутренних дел Российской Федерации, на которые возложены обязанности по предоставлению государственной услуги по регистрации автомототранспортных средств и прицепов к ним <3>, при совершении регистрационных действий в отношении транспортных средств путем заполнения его соответствующих строк и разделов с использованием принтера электронно-вычислительной машины или иного печатающего устройства черным цветом.
———————————
<3> Далее — «подразделение Госавтоинспекции».
Оформленное свидетельство фальцуется по линии сгиба, помещается в ламинационный пакет, а затем ламинируется в установленном формате.
3. Все записи в свидетельстве, за исключением марки и (или) модели (коммерческого наименования) транспортного средства, идентификационного номера транспортного средства либо идентификационного номера основного компонента транспортного средства, номеров шасси, кузова (кабины, прицепа), выполняются на русском языке.
4. Фамилии, имена и отчества (при наличии) физических лиц не должны содержать сокращений. При недостатке поля, выделенного для внесения сведений о наименовании юридического лица, адресах места нахождения юридического лица, места жительства индивидуального предпринимателя, а также места жительства (пребывания) физического лица должны использоваться общепринятые сокращения. Допускается указывать сокращенное наименование юридического лица в соответствии со сведениями, содержащимися в Едином государственном реестре юридических лиц.
5. При написании названий субъектов Российской Федерации применяются следующие сокращения: республика — респ., край — кр., область — обл., автономная область — авт. обл., автономный округ — авт. окр., г. Санкт-Петербург — г. С.-Петербург.
6. Числовые значения всех реквизитов свидетельства указываются арабскими цифрами.
7. Сведения о датах в соответствующих разделах указываются в следующем формате: число, месяц, год (чч.мм.гггг).
8. Сведения о собственнике (владельце) транспортного средства (наименование юридического лица, индивидуального предпринимателя, фамилия, имя, отчество (при наличии) физического лица), а также субъекта Российской Федерации, в подразделении Госавтоинспекции которого состоит на учете транспортное средство, дублируются способом транслитерации в соответствии с рекомендованным образцом (приложение к настоящим Требованиям).
По желанию владельца транспортного средства записи в свидетельстве могут транслитерироваться в соответствии с данными, указанными в его паспорте гражданина Российской Федерации, удостоверяющем личность гражданина Российской Федерации за пределами территории Российской Федерации.
9. Заполнение соответствующих строк и разделов бланка свидетельства осуществляется на основании сведений, содержащихся в паспортах транспортных средств (электронных паспортах транспортных средств) и используемом органами внутренних дел специальном программном обеспечении федеральной информационной системы Госавтоинспекции <1>.
———————————
<1> Приказ МВД России от 5 февраля 2016 г. N 60 «О порядке эксплуатации специального программного обеспечения федеральной информационной системы Госавтоинспекции» (признан не нуждающимся в государственной регистрации, письмо Минюста России от 2 марта 2016 г. N 01/23501-ЮЛ) с изменениями, внесенными приказом МВД России от 31 мая 2018 г. N 344 «О внесении изменений в приказ МВД России от 5 февраля 2016 г. N 60 «О порядке эксплуатации специального программного обеспечения федеральной информационной системы Госавтоинспекции» (признан не нуждающимся в государственной регистрации, письмо Минюста России от 21 июня 2018 г.
N 01/82150-ЮЛ).10. При отсутствии значений каких-либо реквизитов или при невозможности их установить, соответствующие поля в свидетельстве о регистрации не заполняются, за исключением строки «Экологический класс».
11. Не допускаются подчистки, приписки, зачеркнутые слова и цифры, а также проставление в строках бланка свидетельства прочерков.
При оформлении подразделениями Госавтоинспекции свидетельств внесение в них исправлений не допускается. При их ошибочном заполнении они подлежат замене.
12. В строке «Государственный регистрационный номер» указывается присвоенный при совершении регистрационных действий государственный регистрационный номер.
13. В строке «Идентификационный номер (VIN)» указывается комбинация цифровых и (или) буквенных обозначений, присваиваемая изготовителем транспортному средству или его основным компонентам в целях идентификации транспортного средства или его основных компонентов, в качестве которых могут быть использованы арабские цифры и буквы латинского алфавита.
14. В строках «Марка» и «Модель» указывается обозначение марки и (или) модели (коммерческого наименования) транспортного средства, присвоенных изготовителем и приведенных в одобрении типа транспортного средства или свидетельстве о безопасности конструкции транспортного средства <1>.
———————————
<1> Пункт 8 технического регламента Таможенного союза «О безопасности колесных транспортных средств» (ТР ТС 018/2011), утвержденного Решением Комиссии Таможенного союза от 9 декабря 2011 г. N 877 (опубликован на официальном сайте Комиссии Таможенного союза http://www.tsouz.ru 15 декабря 2011 года).
15. В строке «Тип ТС» указывается характеристика транспортного средства, определяемая его конструктивными особенностями и назначением <2>.
———————————
<2> Например: «Легковой, седан» или «грузовой, фургон».
16. В строке «Категория ТС» указывается категория или подкатегория транспортного средства в соответствии с пунктом 1 статьи 25 Федерального закона от 10 декабря 1995 г. N 196-ФЗ «О безопасности дорожного движения» <3>, а также приложением N 1 к техническому регламенту Таможенного союза <4>.
———————————
<3> Собрание законодательства Российской Федерации, 1995, N 50, ст. 4873; 1999, N 10, ст. 1158; 2013, N 19, ст. 2319; N 27, ст. 3477; N 52, ст. 7002; 2014, N 42, ст. 5615; 2017, N 31, ст. 4753; 2018, N 53, ст. 8434.
<4> Например: «B/M1», «C1/N2», «прицеп/O2».
Заполнение данной строки осуществляется в соответствии с категориями транспортных средств, установленными техническим регламентом Таможенного союза и Федеральным законом от 10 декабря 1995 г. N 196-ФЗ «О безопасности дорожного движения» (приложение к Требованиям к паспорту транспортного средства (приложение N 3 к настоящему приказу).
17. В строке «Год выпуска ТС» указывается год изготовления транспортного средства.
17.1. При отсутствии документального подтверждения даты изготовления транспортного средства год выпуска определяется по коду изготовления, приведенному в идентификационном номере транспортного средства.
(в ред. Приказа МВД России от 28.09.2020 N 676)
(см. текст в предыдущей редакции)
18. В строках «Шасси (рама) N» и «Кузов (кабина, прицеп) N» соответственно указываются идентификационные номера кузова (кабины, прицепа), шасси (рамы), присвоенные и нанесенные изготовителем транспортного средства.
19. В строке «Цвет» указывается один из следующих основных цветов, нанесенных на наружные поверхности кузова (кабины) транспортного средства: белый, желтый, коричневый, красный, оранжевый, фиолетовый, синий, зеленый, черный, серый.
(в ред. Приказа МВД России от 28.09.2020 N 676)
(см. текст в предыдущей редакции)
В случае нанесения на наружные поверхности кузова (кабины) нескольких цветов цвет указывается как комбинированный или многоцветный с указанием основных цветов <1>.
———————————
<1> Например: «Многоцветный: синий, красный».
При наличии на наружных поверхностях транспортных средств, предусмотренных для оперативных и специальных служб специальных цветографических схем окраски, а также установленных специальных световых и звуковых сигналов <2>, указываются сведения о номерах такой схемы и соответствующих положениях национального стандарта <3>.
———————————
<2> Указ Президента Российской Федерации от 19 мая 2012 г. N 635 «Об упорядочении использования устройств для подачи специальных световых и звуковых сигналов, устанавливаемых на транспортные средства» (Собрание законодательства Российской Федерации, 2012, N 21, ст. 2632; N 22, ст. 2760; 2013, N 24, ст. 2989; N 40, ст. 5051; 2014, N 20, ст. 2502; N 23, ст. 2966; N 30, ст. 4282; 2015, N 32, ст. 4752; 2016, N 12, ст. 1641; N 37, ст. 5479; N 44, ст. 6119; N 50, ст. 7077; 2017, N 48, ст. 7197; 2018, N 1, ст. 319; N 42, ст. 6448; 2019, N 4, ст. 321).
<3> Пункт 3 требований к транспортным средствам, используемым для осуществления неотложных действий по защите жизни и здоровья граждан, и специальным оперативно-служебным транспортным средствам уголовно-исполнительной системы для перевозки лиц, находящихся под стражей, утвержденных постановлением Правительства Российской Федерации от 30 августа 2007 г. N 548 (Собрание законодательства Российской Федерации, 2007, N 36, ст. 4387; 2011, N 42, ст. 5922; N 51, ст. 7526; 2012, N 53, ст. 7931; 2016, N 5 ст. 692; N 49, ст. 6914; 2018, N 10, ст. 1489; N 29, ст. 4435; N 52, ст. 8303; 2019, N 15, ст. 1774).
19.1. В строке «Мощность двигателя, л.с. (кВт)» (при наличии такой строки в свидетельстве) указывается мощность двигателя в лошадиных силах (киловаттах).
(п. 19.1 введен Приказом МВД России от 28.09.2020 N 676)
20. В строке «Одобрение типа ТС N» (при наличии такой строки в свидетельстве) указываются номер одобрения типа транспортного средства или свидетельства о безопасности конструкции транспортного средства.
(в ред. Приказа МВД России от 28.09.2020 N 676)
(см. текст в предыдущей редакции)
21. В строке «Экологический класс» прописью и числовым значением указывается один из экологических классов, которому соответствует транспортное средство <4>.
———————————
<4> Например: «Четвертый/4».
При отсутствии сведений об экологическом классе транспортного средства вносится запись: «отсутствует».
22. В строке «Паспорт ТС N» (при наличии такой строки в свидетельстве) указывается номер паспорта транспортного средства (электронного паспорта транспортного средства).
(в ред. Приказа МВД России от 28.09.2020 N 676)
(см. текст в предыдущей редакции)
23. В строке «Технически допустимая макс. масса, кг» указывается установленная изготовителем технически допустимая максимальная масса транспортного средства.
24. В строке «Масса в снаряженном состоянии, кг» указывается определенная изготовителем масса транспортного средства в снаряженном состоянии.
25. В строке «Срок временной регистрации» (при наличии такой строки в свидетельстве) указывается дата окончания регистрации, в случае регистрации на ограниченный срок, в том числе при прекращении регистрации в связи с вывозом за пределы Российской Федерации.
(в ред. Приказа МВД России от 28.09.2020 N 676)
(см. текст в предыдущей редакции)
26. В строке «Собственник (владелец)» указывается полное или сокращенное наименование юридического лица, фамилия, имя и (при наличии) отчество индивидуального предпринимателя или физического лица. Наименование юридического лица допускается указывать в соответствии с наименованием, содержащимся в Едином государственном реестре юридических лиц.
27. В строках, содержащих сведения о месте жительства (пребывания) физического лица или месте (нахождения) юридического лица, указывается соответствующий адрес места жительства (пребывания) физического лица, места жительства индивидуального предпринимателя, места нахождения юридического лица, являющихся собственниками (владельцами) транспортного средства: субъект Российской Федерации (республика, край, область), район (при наличии такой строки в свидетельстве), населенный пункт, улица, дом, корпус (строение), квартира.
(в ред. Приказа МВД России от 28.09.2020 N 676)
(см. текст в предыдущей редакции)
28. В строке «Особые отметки» в обязательном порядке вносятся следующие сведения:
для транспортных средств, принадлежащих физическим лицам, — «Собственник» или «Владелец»;
для транспортных средств, принадлежащих индивидуальным предпринимателям, — «Собственник ИП», «Владелец ИП» или «Лизингополучатель ИП»;
для транспортных средств, принадлежащих юридическим лицам, — «Собственник ЮЛ», «Лизингополучатель ЮЛ», «Филиал», «Представительство» или «Обособ. подразделение»;
для транспортных средств, предназначенных для перевозки пассажиров (категория M2 или M3), — количество мест для сидения, не включая место водителя;
для транспортных средств, в конструкцию которых были внесены изменения, — номер свидетельства о соответствии транспортного средства с внесенными в его конструкцию изменениями требованиям безопасности, внесенные изменения в конструкцию, а также все особые отметки об ограничении применения транспортного средства, содержащиеся в свидетельстве о соответствии транспортного средства с внесенными в его конструкцию изменениями требованиям безопасности;
для транспортных средств, имеющих измененную маркировку транспортного средства и номерных агрегатов в результате коррозии, ремонта, а также преступных посягательств третьих лиц и возвращенных собственникам (владельцам) транспортных средств после хищения, — производится запись «Нанесена дополнительная маркировка» с указанием ее структуры;
абзац утратил силу. — Приказ МВД России от 28. 09.2020 N 676;
(см. текст в предыдущей редакции)
для транспортных средств, вывозимых за пределы Российской Федерации, — производится запись: «Регистрация прекращена __.__.____ г., подлежит обязательному вывозу за пределы Российской Федерации»;
для транспортных средств, год выпуска которых не установлен, — год первой регистрации транспортного средства;
(абзац введен Приказом МВД России от 28.09.2020 N 676)
для транспортных средств, владельцами которых являются лица, не являющиеся их собственниками, — сведения о собственниках транспортных средств;
(абзац введен Приказом МВД России от 28.09.2020 N 676)
для транспортных средств, поставленных на государственный учет на ограниченный срок, либо в отношении которых прекращен государственный учет в связи с вывозом за пределы Российской Федерации, — дата окончания регистрации;
(абзац введен Приказом МВД России от 28.09.2020 N 676)
о таможенных ограничениях;
(абзац введен Приказом МВД России от 28. 09.2020 N 676)
о мощности двигателя, номерах паспорта транспортного средства, одобрения типа транспортного средства и сроке временной регистрации — в случае, если такие сведения не указаны в соответствующих строках свидетельства.
(абзац введен Приказом МВД России от 28.09.2020 N 676)
29. В строке «Код подразделения ГИБДД» указывается семизначный код выдавшего свидетельство подразделения Госавтоинспекции, в формате: «0000111», где:
«0000» — цифровой код субъекта Российской Федерации;
«111» — цифровой код регистрационного подразделения <1>.
———————————
<1> Например: «1102123».
30. В строке, предусмотренной для заполнения даты выдачи свидетельства, она указывается в формате, предусмотренном пунктами 6 и 7 настоящих Требований.
31. Состав строк, предусмотренный приложением N 2 к настоящему приказу и пунктами 12 — 25 настоящих Требований определяется путем утверждения образца <2>.
(п. 31 введен Приказом МВД России от 28. 09.2020 N 676)
———————————
<2> Пункт 2 Приказа МВД России N 390.
(сноска введена Приказом МВД России от 28.09.2020 N 676)
- Приложение. Транслитерация кириллических знаков (рекомендуемый образец)
Приложение. Категории транспортных средств, установленные техническим регламентом Таможенного союза «О безопасности колесных транспортных средств» (ТР ТС 018/2011), и Федеральным законом от 10 декабря 1995 г. N 196-ФЗ «О безопасности дорожного движения» Приложение. Транслитерация кириллических знаков (рекомендуемый образец)
Запрет въезда грузовиков в Москву в 2021 году
Запрет въезда грузовиков в Москву в 2019 году
Pddclub » 28 авг 2019, 13:24
- Pddclub
- Служба поддержки
Сообщения2
Благодарности0
Год регистрации2011
ГородМосква
Вернуться наверх
Re: Комментарии к «Запрет въезда грузовиков в Москву в 2019 году»
Максим » 28 авг 2019, 21:05
Роман, здравствуйте.
С точки зрения ПДД в настоящее время экологические дорожные знаки не распространяются на транспортные средства, у которых экологический класс не установлен. То есть проезд под запрещающие знаки не будет нарушение правил. Однако я не могу гарантировать того, что штрафы с камер в итоге не придут.
С 1 июля 2021 года ПДД изменятся и проезд для автомобилей, у которых экологический класс не установлен, будет запрещен.
Удачи на дорогах!
Проверка и оплата штрафов ГИБДД со скидкой 50 процентов | ПДД 2023 года — основа безопасного поведения на дороге
Максим- Эксперт по ПДД
Сообщения20466
Благодарности823
Год регистрации2011
ГородРязань
Вернуться наверх
Re: Комментарии к «Запрет въезда грузовиков в Москву в 2019 году»
Максим » 09 сен 2019, 14:59
Виталий:
1. На вопрос по поводу экологического класса я ответил на 1 сообщение выше.
2. По поводу массы. Вы можете получить разрешение на эвакуатор и ограничения по массе на Вас распространятся не будут. Однако ограничения по экологическому классу все равно нужно будет соблюдать.
Удачи на дорогах!
Проверка и оплата штрафов ГИБДД со скидкой 50 процентов | ПДД 2023 года — основа безопасного поведения на дороге
Максим- Эксперт по ПДД
Сообщения20466
Благодарности823
Год регистрации2011
ГородРязань
Вернуться наверх
Запрет въезда грузовиков в Москву в 2019 году
Pddclub » 27 ноя 2019, 11:35
- Pddclub
- Служба поддержки
Сообщения2
Благодарности0
Год регистрации2011
ГородМосква
Вернуться наверх
Re: Запрет въезда грузовиков в Москву в 2019 году
Рифат » 14 дек 2019, 18:51
Добрый вечер.
ПРАВИТЕЛЬСТВО МОСКВЫ
ПОСТАНОВЛЕНИЕ
от 22 августа 2011 г. N 379-ПП
ОБ ОГРАНИЧЕНИИ ДВИЖЕНИЯ ГРУЗОВОГО АВТОТРАНСПОРТА В ГОРОДЕ
МОСКВЕ …..
…1. Запретить:
1.1. Въезд в центральную часть города, ограниченную Третьим транспортным кольцом (далее — ТТК), и движение по ТТК грузовых транспортных средств, соответствующих по экологическим характеристикам требованиям ниже экологического класса 3…..
2. Ограничить с 6.00 до 22.00:
2.1. Въезд и движение по территории города Москвы, ограниченной ТТК, и движение по ТТК грузового автотранспорта грузоподъемностью более 1 тонны.
Рифат- Эксперт по ПДД
Сообщения1905
Благодарности114
Год регистрации2019
ГородМосква
Вернуться наверх
Запрет въезда грузовиков в Москву в 2019 году
Роман-210 » 18 дек 2019, 15:44
Здравствуйте, TOYOTA HILUX экологический класс 4, категория В, грузоподъемность менее тонны (~800кг), в документах грузовой-бортовой. Правильно ли я понимаю, что для меня нет ограничений по передвижению внутри ТТК и садового кольца??
Роман-210- Автолюбитель
Сообщения1
Благодарности0
Год регистрации2019
Вернуться наверх
Пред.След.Показать сообщения за: Все сообщения1 день7 дней2 недели1 месяц3 месяца6 месяцев1 годСортировать по: АвторВремя размещенияЗаголовок по возрастаниюпо убыванию
Вернуться в Разные вопросы
Перейти: выберите форум——————Информация Вопросы по работе с форумом Отзывы о статьях сайта PDDMASTER.RUАвтомобили Водительское удостоверение Покупка и продажа автомобиля, регистрация в ГИБДД ОСАГО и техосмотр Коммерческий транспорт Разные вопросы Интернет-сервисы для автомобилистов Автомобильные новостиАвтомобильное законодательство Законы РФ Изменения автомобильного законодательства Общение с ГИБДД Предложения по усовершенствованию нормативных правовых документов Предложения по усовершенствованию ПДДАвтошколы Сдача теоретического экзамена Сдача автодрома Сдача города Общие вопросыПравила дорожного движения Вопросы по ПДД Штрафы ГИБДД за нарушение ПДД Неоднозначности ПДД Дорожно-транспортные происшествияОбщение КурилкаКто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0
© 2011 — 2022 Команда сайта PDDCLUB. RU (ПДД КЛУБ.РУ). Все права защищены. Запрещается использовать информацию с сайта без письменного разрешения авторов.
Политика конфиденциальности
python. Как лучше всего проверить, существует ли переменная среды или нет?
Я хочу проверить свою среду на наличие переменной, скажем, "FOO"
в Python. Для этой цели я использую стандартную библиотеку os
. Прочитав документацию библиотеки, я нашел 2 способа достижения своей цели:
Метод 1:
, если "FOO" в os.environ: проходить
Метод 2:
, если os.getenv("FOO") не None: проходить
Я хотел бы знать, какой метод является хорошим/предпочтительным условным оператором и почему.
- python
- python-2.7
- python-3.x
- оператор if
- переменные окружения
10
Используйте первый; он напрямую пытается проверить, определено ли что-то в environ
. Хотя вторая форма работает так же хорошо, семантически ей не хватает, так как вы возвращаете значение, если оно существует, и только используют его для сравнения.
Вы пытаетесь увидеть, присутствует ли что-то в окружении
, зачем вам брать просто для сравнения, а затем отбрасывать ?
Это именно то, что делает getenv
:
Получить переменную окружения , вернуть
None
, если она не существует. необязательный второй аргумент может указать альтернативное значение по умолчанию.
(это также означает, что ваш чек может быть просто if getenv("FOO")
)
вы не хотите получать его , вы хотите проверить его существование.
В любом случае, getenv
— это просто оболочка вокруг environ.get
, но вы не видите людей, проверяющих членство в сопоставлениях с помощью:
from os import environ если environ. get('Foo') не None:
Подводя итог, используйте:
, если "FOO" в os.environ: проходить
если вы просто хотите проверить на существование, пока используйте getenv("FOO")
, если вы действительно хотите что-то сделать со значением, которое вы можете получить.
3
Можно использовать любое решение, в зависимости от того, что вы хотите сделать при условии наличия переменной среды.
Если вы хотите выполнять различные действия исключительно на основе существования переменной среды, не заботясь о ее значении, лучше всего использовать первое решение. Он кратко описывает, что вы тестируете: есть ли «FOO» в списке переменных среды.
, если 'KITTEN_ALLERGY' в os.environ: купить_щенка() еще: купить_котенок()
Когда вы хотите установить значение по умолчанию, если значение не определено в переменных среды, второе решение действительно полезно, хотя и не в той форме, в которой вы его написали:
server = os. getenv('MY_CAT_STREAMS', 'youtube .com')
или, возможно,
server = os.environ.get('MY_CAT_STREAMS', 'youtube.com')
Обратите внимание, что если у вас есть несколько вариантов для вашего приложения, вы можете изучить ChainMap
, который позволяет объединять несколько диктов на основе ключей. Пример этого есть в документации ChainMap
:
[...] в сочетании = ChainMap (command_line_args, os.environ, значения по умолчанию)
0
На всякий случай используйте
os.getenv('FOO') или 'bar'
Крайний случай с приведенными выше ответами — это когда переменная среды установлена, но пуста
В этом особом случае вы получаете
print(os.getenv('FOO', 'бар')) # печатает новую строку - хотя вы ожидали `bar`
или
, если "FOO" в os.environ: print("ФОО здесь") # выводит FOO здесь, но это не так
Чтобы избежать этого, просто используйте или
os. getenv('FOO') или 'bar'
Затем вы получаете
print(os.getenv('FOO') или 'bar') # бар
Когда у нас есть пустые переменные среды?
Вы забыли установить значение в .env
файл
# .env ФОО=
или экспортируется как
$ export FOO=
или забыл установить его в settings.py
# settings.py os.environ['FOO'] = ''
Обновление: , если сомневаетесь, ознакомьтесь с этими однострочниками
>>> import os; os.environ['FOO'] = ''; печать (os.getenv ('FOO', 'бар')) $ FOO= python -c "import os; print(os.getenv('FOO', 'bar'))"
4
Если вы хотите проверить, не установлены ли несколько переменных env, вы можете сделать следующее:
import os MANDATORY_ENV_VARS = ["FOO", "BAR"] для var в MANDATORY_ENV_VARS: если var не в os.environ: поднять EnvironmentError("Ошибка, потому что {} не установлено. ".format(var))
0
Я бы рекомендовал следующее решение.
Он печатает переменные env, которые вы не включили, что позволяет добавить их все сразу. Если вы выберете цикл for, вам придется перезапустить программу, чтобы увидеть каждую отсутствующую переменную.
из среды импорта ОС REQUIRED_ENV_VARS = {"А", "Б", "С", "Г"} diff = REQUIRED_ENV_VARS.difference(среда) если len(diff) > 0: поднять EnvironmentError (f 'Не удалось, потому что {diff} не установлены')
3
Учитывая, что вы используете переменную среды с именем Foo
, которая может меняться в зависимости от разных сред, я бы предложил получить ее значение и INFO (или DEBUG) зарегистрировать его, даже если вы используете его значение (например, логическое) так же, как переключатель или критерий принятия решения. Это может помочь вам, когда что-то пойдет не так, или просто для проверки работоспособности позже.
#питон=3.8 импорт ОС журнал импорта foo = os.getenv("FOO") если фу: logging.info(f"Продолжение, поскольку существует переменная окружения FOO {foo=}") проходить еще: # правильное действие/регистрация в зависимости от контекста проходить
Я бы посоветовал не использовать альтернативы жесткого кодирования в самом коде без надлежащего ведения журнала. Использование foo = os.getenv("FOO", "BAR")
может незаметно изменить поведение вашего кода.
Кроме того, лучше всего иметь все ваши константы либо в файле конфигурации, либо в качестве переменных среды и ничего жестко не кодировать в самом исходном коде. Значения по умолчанию и альтернативы могут находиться внутри файла конфигурации, а константы, изменяющие среду, должны быть env vars, чтобы вы могли легко изменять их во время развертывания.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Как установить переменные среды в Python?
Мне нужно установить некоторые переменные среды в сценарии Python, и я хочу, чтобы все другие сценарии, вызываемые из Python, видели набор переменных среды.
Если да,
os.environ["DEBUSSY"] = 1
он жалуется, что 1
должен быть строкой.
Я также хочу знать, как читать переменные окружения в Python (в последней части скрипта), как только я их настрою.
- Python
- переменные окружения
1
Переменные среды должны быть строками, поэтому используйте
os.environ["DEBUSSY"] = "1"
, чтобы установить переменную DEBUSSY
в строку 1
.
Чтобы получить доступ к этой переменной позже, просто используйте
print(os.environ["DEBUSSY"])
Дочерние процессы автоматически наследуют среду родительского процесса — никаких специальных действий с вашей стороны не требуется.
7
Возможно, вам придется рассмотреть некоторые дополнительные аспекты надежности кода;
при сохранении целочисленной переменной в качестве переменной среды попробуйте
os. environ['DEBUSSY'] = str(myintvariable)
, то для извлечения учтите, что во избежание ошибок следует попробовать
os.environ.get('DEBUSSY', 'Not Set')
, возможно, замените «-1» на «Не задано»
, чтобы собрать все вместе
myintvariable = 1 os.environ['DEBUSSY'] = str(myintvariable) Штраус = int(os.environ.get('ШТРАУС', '-1')) # NB KeyError <=> strauss = os.environ['STRAUSS'] debussy = int(os.environ.get('DEBUSSY', '-1')) print "%s %u, %s %u" % ('Штраус', Штраус, 'Дебюсси', Дебюсси)
3
os.environ
ведет себя как словарь Python, поэтому можно выполнять все обычные операции со словарями. В дополнение к операциям get
и set
, упомянутым в других ответах, мы также можем просто проверить, существует ли ключ. Ключи и значения должны храниться в виде строк .
Python 3
Для Python 3 словари используют ключевое слово в ключевом слове вместо has_key
>>> импорт ОС >>> 'HOME' в os. environ # Проверить существующую среду. переменная Истинный ...
Python 2
>>> импорт ОС >>> os.environ.has_key('HOME') # Проверить существующую среду. переменная Истинный >>> os.environ.has_key('FOO') # Проверка несуществующей переменной ЛОЖЬ >>> os.environ['FOO'] = '1' # Установить новую среду. переменная (строковое значение) >>> os.environ.has_key('FOO') Истинный >>> os.environ.get('FOO') # Получить значение '1'
При использовании os.environ
:
следует отметить одну важную вещь. Хотя дочерние процессы наследуют среду от родительского процесса, недавно я столкнулся с проблемой и выяснил, есть ли у вас другие сценарии, обновляющие Окружающая среда во время работы вашего скрипта Python, повторный вызов os.environ
не будет отражать последние значения .
Выдержка из документации:
Это сопоставление фиксируется при первом импорте модуля os, обычно во время запуска Python как часть обработки site. py. Изменения к окружающей среде, сделанные по истечении этого времени, не отражаются в os.environ, за исключением изменений, сделанных путем прямого изменения os.environ.
os.environ.data
, в котором хранятся все переменные среды, является объектом dict, который содержит все значения среды:
>>> type(os.environ.data) # изменен на _data начиная с версии 3.2 ( см комментарий ниже) <тип 'слов'>
2
Прежде чем использовать этот метод, просмотрите разделы комментариев
Я пытался добавить переменные среды. Моя цель состояла в том, чтобы сохранить некоторую пользовательскую информацию в системных переменных, чтобы я мог использовать эти переменные для будущих решений в качестве альтернативы файлам конфигурации. Однако метод, описанный в коде ниже, мне совершенно не помог.
импорт ОС os.environ["переменная_1"] = "значение_1" os.environ["переменная_2"] = "значение_2" # Для проверки вышеприведенного кода os. environ.get("переменная_1") os.environ.get("переменная_2")
Этот простой блок кода работает хорошо, однако эти переменные существуют внутри соответствующих процессов, поэтому вы не найдете их на вкладке переменных среды системных настроек Windows. В значительной степени приведенный выше код не служил моей цели. Эта проблема обсуждается здесь: проблема с сохранением переменной
os.environ.putenv(key, value)
Еще одна неудачная попытка. Итак, наконец, мне удалось успешно сохранить переменные в реестре среды окна, имитируя команды оболочки Windows, завернутые в системный класс пакета os. Следующий код описывает эту успешную попытку.
os.system("SETX {0} {1} /M".format(ключ, значение))
Я надеюсь, что это будет полезно для некоторых из вас.
4
если я сделаю os.environ[«DEBUSSY»] = 1, это жалуется, говоря, что 1 должно быть нить.
Затем выполните
os. environ["DEBUSSY"] = "1"
Я также хочу знать, как читать переменные среды в python (в более поздняя часть скрипта) как только я установил Это.
Просто используйте os.environ["DEBUSSY"]
, как в
some_value = os.environ["DEBUSSY"]
для установки переменной:
пункт Метод назначения с помощью ключа:
import os os.environ['DEBUSSY'] = '1' # Переменная среды должна быть строкой, а не целым числом
, чтобы получить или проверить, существует ли он или нет,
, поскольку os.environ — это экземпляр, который вы можете попробовать объектным путем.
Метод 1:
os.environ.get('DEBUSSY') # это безошибочный метод, если не возвращает None по умолчанию
получит '1'
в качестве возвращаемого значения
Метод 2:
os.environ['DEBUSSY'] # выдаст ошибку ключа, если не найден!
Метод 3:
'DEBUSSY' в os. environ # вернет логическое значение True/False
Метод 4:
os.environ.has_key('DEBUSSY') #последние 2 метода являются логическим возвратом, поэтому их можно использовать для условных операторов
Как насчет os.environ["DEBUSSY"] = '1'
? Переменные среды всегда являются строками.
Вы должны присвоить строковое значение переменной окружения.
os.environ["DEBUSSY"] = "1"
Если вы хотите прочитать или распечатать переменную среды, просто используйте
print os.environ["DEBUSSY"]
Эти изменения будут действовать только для текущего процесса, которому они были назначены, они не изменят значение навсегда. Дочерние процессы автоматически наследуют среду родительского процесса.
3
Следует отметить, что если вы попытаетесь установить переменную окружения для оценки bash, она не сохранит то, что вы ожидаете. Пример:
из среды импорта ОС среда["JAVA_HOME"] = "$(/usr/libexec/java_home)"
Это не будет оценивать его, как в оболочке, поэтому вместо получения /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
в качестве пути вы получите буквальное выражение $( /usr/libexec/java_home)
.
Обязательно оцените его перед установкой переменной среды, например так:
из os import environ из импорта подпроцесса Popen, PIPE bash_variable = "$(/usr/libexec/java_home)" захват = Popen(f"echo {bash_variable}", stdout=PIPE, shell=True) std_out, std_err = захват.коммуникация() return_code = захват.returncode если код_возврата == 0: оцениваемый_env = std_out.decode().strip() среда["JAVA_HOME"] = оцененная_окружение еще: print(f"Ошибка: невозможно найти переменную среды {bash_variable}")
Вы можете использовать словарь os.environ
для доступа к переменным среды.
Проблема, с которой я столкнулся, заключается в том, что если я попытаюсь использовать os. system
для запуска пакетного файла, который устанавливает переменные среды (используя команду SET в файле **.bat*), он на самом деле не установит их. для вашей среды Python (но для дочернего процесса, созданного с помощью функции os.system
). Чтобы получить набор переменных в среде python, я использую этот скрипт:
импорт повторно система импорта импорт ОС def setEnvBat (batFilePath, подробный = False): SetEnvPattern = re.compile("set (\w+)(?:=)(.*)$", re.MULTILINE) SetEnvFile = открыть (batFilePath, "r") SetEnvText = SetEnvFile.read() SetEnvMatchList = re.findall (SetEnvPattern, SetEnvText) для SetEnvMatch в SetEnvMatchList: VarName=SetEnvMatch[0] VarValue=SetEnvMatch[1] если подробно: напечатайте "%s=%s"%(VarName,VarValue) os.environ[ИмяПеременной]=ЗначениеПеременной
Когда вы играете с переменными окружения (добавляете/изменяете/удаляете переменные), рекомендуется восстанавливать предыдущее состояние при завершении функции.
Вам может понадобиться что-то вроде менеджера контекста modified_environ
, описанного в этом вопросе, для восстановления переменных среды.
Классическое использование:
с модифицированной_средой(DEBUSSY="1"): call_my_function()
Используйте функцию setdefault
для установки новой переменной, если она не существует в среде.
убедитесь, что вы установили переменную среды как строку, а не как целое число. В противном случае выдаст TypeError
.
импорт ОС если не os.environ.get("DEBUSSY"): os.environ.setdefault("DEBUSSY","1") еще: os.environ["DEBUSSY"] = "1" print(os.environ["DEBUSSY"])
1
Что насчет следующего?
os.environ["ДЕБЮССИ"] = '1' дебюсси = int(os.environ.get('DEBUSSY')) печать (тип (дебюсси))
<класс 'целое число'>
Я написал этот небольшой менеджер контекста, который устанавливает переменные только на время блока с отступом:
import os из контекстного менеджера импорта контекста @contextmanager защита расширенного_env (new_env_vars): old_env = os. environ.copy() os.environ.update(new_env_vars) урожай os.environ.clear() os.environ.update(old_env)
Пример использования (с %
для Windows и $
для Linux):
подпроцесс импорта subprocess.run("эхо $ENVTEST %ENVTEST%", оболочка=Истина) с extended_env({"ENVTEST": "17"}): subprocess.run("эхо $ENVTEST %ENVTEST%", оболочка=Истина) subprocess.run("эхо $ENVTEST %ENVTEST%", оболочка=Истина)
Существует хорошее готовое решение для Python, которое называется pycrosskit. Он создаст переменные среды, которые будут постоянными как для Linux, так и для Windows.
Использование:
# Будет установлено постоянное значение для переменной в системе # * подраздел работает только для окон, таких как файл в папке # * reg_path работает только для окон как путь к регистру SysEnv.set_var(имя, значение, подраздел, reg_path=default_reg_path) # Будет получено постоянное значение для переменной в системе # * reg_path работает только для окон как путь к регистру # * delete, удаляет ключ из окружения и его подразделы после чтения SysEnv. get_var(имя, reg_path=default_reg_path, удалить=False)
1
Если у вас проблемы с Flask и unittest, помните, что если вы устанавливаете переменную вне какого-либо метода, эта переменная считывается при импорте приложения. Может показаться тривиальным, но может избавить кого-то от головной боли.
Например, если в вашем юниттесте Flask вы:
- импортируете приложение
- установите переменную среды в методе
setUp
. - использовать
app.test_client()
для тестирования вашего приложения
Переменная второго шага не будет видна третьему шагу, потому что переменная уже считана при выполнении первого шага.
Удобный способ управления определяемыми пользователем переменными среды состоит в том, чтобы поместить их все в текстовый файл и загрузить во время выполнения. Мы можем добиться этого с помощью пакета python-dotenv, который позволяет нам импортировать эти переменные. Этот пакет можно установить через
.pip установить python-dotenv
По умолчанию модуль ищет файл с именем .env в текущем каталоге. Определите все ваши переменные в этом файле, по одной на строку следующим образом:
DEBUSSY=1 PATH_TO_EXECUTABLE=/home/user_name/project/run.sh
Затем импортируйте их в свою среду следующим образом:
from dotenv import load_dotenv load_dotenv()
Вы можете указать путь к файлу, содержащему определенные переменные, в качестве необязательного аргумента для load_dotenv . Впоследствии к этим переменным среды можно будет получить обычный доступ через модуль os .
Поздний ответ, который может помочь кому-то быстро протестировать без изменения кода. Просто запустите приложение с присоединенной переменной окружения:
$ DEBUSSY=1 python3 api.py
Вы можете передавать env vars таким образом в любой скрипт.
Среда заморожена для самого кода (не дочерних процессов) и не может быть выполнена программно.