В контейнере не найден файл version

Обновлено: 06.07.2024

Почему вы видите это здесь:
Большинство Все инструкции по установке КАП которые я встречал предлагают установку в графическом режиме, только в некоторых указано, что установка производится членом группы администраторов, про установку без криптопровайдера и из командной строки не говорится ничего

ful пишет: Из нашего УФК сообщили, что Континент не работает с 2012 гостом на Крипто про. Для этого рекомендуют ставить Континент с встроенным криптопровайдером, чтоб через него, потом генерировать ключи по новому госту.

В связи с тем, что эта печальная новость подтверждена разработчиками и криптопровайдер понадобится таки для генерации ключей КАП по новому ГОСТ для минимизации глюков остаётся ставить Криптопро и Континент АП последних версий с криптопровайдером. На текущий момент это: 4.0.9955 и 3.7.7.651 соответственно.

Криптопро последней версии пофиг на "посторонний" криптопровайдер

КАП последней версии не имеет проблем с сертификатами с "неправильными" символами

Установка в графическом режиме, даже из под пользователя группы администраторы приводит к ошибкам, связанным очевидно с правами доступа к реестру, диску С: и папке Program Files и не позволяет избавиться от криптопровайдера.

Для любознательных: запускаем установщик с ключом /? читаем описание ключей командной строки :)

Установка КАП с криптопровайдером приводит к ошибке, для решения которой предлагают поковырять реестр, а этого лучше избежать.

Возникает ошибка подписи с применением КриптоПро 4.0.9842 + Континент АП 3.7.426 на порталах СУФД и ФЗС

Важно! Версия Крипто про должна быть не ниже v4.0.9944

Перед установкой удаляем предыдущие версии крипто-про и континент . Не экономим на количестве перезагрузок!

Описание процесса удаления предыдущей версии КАП подробно от "Wmffre"

  1. Удалите установленный Континент-АП через "Установку и удаление программ"
  2. Запустите C:\Program Files\Security Code\Terminal Station\csp\csp_uninst.exe (если есть)
  3. Далее удалите вручную через кнопку "Удалить" ( если осталось ) " Continent 3 MSE Filter " в свойствах "Подключение по локальной сети"
  4. Далее щелкните правой кнопкой мыши на значок "Мой компьютер" --> "Управление" --> левой кнопкой мыши выделите "Диспетчер устройств", вверху выберете "Вид", "Показать скрытые устройства" --> далее раскройте "Сетевые адаптеры" и удалите ( если осталось ) " Continent 3 PPP Device "
  5. Далее удалите КриптоПро CSP через утилиту удаления .
  6. Обязательно перезагрузитесь
  7. После перезагрузки установите КриптоПро CSP 4.0.9944
  8. Обязательно перезагрузитесь снова
  9. После перезагрузки установите Континент-АП 3.7.5 без сетевого экрана
  10. Обязательно перезагрузитесь
  11. После перезагрузки, если устанавливали криптопровайдер SecurityCode CSP, сделайте твик реестра (на x86 есть только первая ветвь реестра) для совместной работы КриптоПро CSP и SecurityCode CSP

Устанавливать Континент АП только из командной строки от имени администратора без межсетевого экрана и криптопровайдера

Перезагрузка
Прописываем сетевой адрес (или доменное имя) криптошлюза
===================
Про сетевой адрес и доменное имя
Внимание доменное имя здесь показано для примера!
В каждом регионе своё. Необходимо его пропинговать и получить IP адрес

Если вы прописали доменное имя, и нет соединения с сервером, убедитесь что оно успешно пингуется
Попробуйте вместо имени вписать IP и установить соединение

Чтобы не блокировалась локальная сеть - В свойствах своего сетевого подключения уберите чекбокс с Continent 3 MSE Filter

Будьте внимательны, при установке может проснуться Брандмауэр Windows, даже отключённый, необходимо дать в нём разрешения. Антивирус на время установки лучше выключить. Могут запрашиваться разрешения на установку драйверов - разрешаем

Запускать сам КАП потом тоже лучше от имени администратора.
Но, если установка делалась не из командной строки запуск КАП от имени администратора вам тоже не поможет - возникнут ошибки.

КАП 3.7 не распознаёт ключи сохранённые в реестре в реестре, и в некоторых случаях и не создаёт контейнер в реестре, хотя пишет, что создан. В связи с этим настоятельно рекомендуется создавать контейнер на флешке, откуда легко можно (и нужно!) сделать его копию.

Даже при отключённых обновлениях Windows периодически могут появляться ошибки целостности. Их можно попробовать обойти, обрезав файл c:\Program Files\Security Code\Terminal Station\integrity.xml как показано ниже, естественно предварительно сделав копию.

Пример файла integrity.xml Хеш (циферки) у каждого свои!

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<integrity><catalog name="common"><entry name="ngc.exe"><file>C:\Program Files\Security Code\Terminal Station\ngc.exe</file><hash> EBB64993D92299B11721C324F06299E06143BA7967EDF9C57BCFA546B5A41268 </hash></entry></catalog></integrity>

Далее запускаем ngs.exe чтобы убедиться, что проверка целостности проходит успешно.

Могут внезапно появиться ошибки типа "не найден модем"
В связи с тем, что автоматическое восстановление КАП 3.7 происходит в два этапа (удаление-перезагрузка-установка) и установка проходит уже не от администратора восстановление оказывается неэффективным, здесь поможет только удаление и установка КАП

Если вы обладатель "многолетнего" сертификата КАП не копируйте сертификат в контейнер, ибо Криптопро четвёртой версии считает что срок действия ключа не может превышать 15 месяцев, и возникает ошибка доступа к контейнеру. Если сертификата в контейнере нет срок не контролируется.

. ТОЛЬКО ДЛЯ РЕГИОНОВ ГДЕ КРИПТОПРОВАЙДЕР КОД БЕЗОПАСНОСТИ ИСПОЛЬЗУЕТСЯ ДЛЯ ГЕНЕРАЦИИ КЛЮЧА КОНТИНЕНТ-АП

Amana пишет: Установили Континент-АП по инструкции через командную строчку. Но почему-то не установился второй криптопровайдер (код безопасности), с помощью которого надо было сгенерировать ключ.

Это не "почему то", оно специально так задумывалось, чтобы избежать потом проблем с подписанием документов в СУФД и с заявками ФЗС.
Но если он вам точно нужен то при установке убираете ключ /NCSP
Обновить Криптопро до версии минимум 4.0.9944 Переустановите плагин Криптопро.

GraySlay 31.08.2018 12:14

пожелание здоровья разработчикам и распостранителям - непереводимая игра слов
Топикстартер, будьте так любезны, разместите информацию о том, что версия КАП 3.7.5, радостно втюхиваемая казной, откажется импортировать сертификат КАП, в случае если у пользователя куча ЭЦП, например, ЭЦП от Контура или СБИС. "Неизвестная ошибка импорта сертификата" в Континент-АП_3.7. 5.474 .

ПРИЧИНА . В хранилище ОС "Сертификаты - текущий пользователь -> Личное -> Сертификаты" есть сертификаты ЮЛ (от "Тензор" или "Контур-Экстерн"), содержащие недопустимые для Континент-АП (почему-то?) символы ",+; Если в названии организации есть кавычки, то по ошибке разработчиков КАП-3.7.5. 474 обращает внимание на такие сертификаты и отказывается дальше искать и устанавливать континентовский сертификат пользователя.

РЕШЕНИЕ . Как вариант предлогаю выполнить следующее.

1. Из указанного выше хранилища сертификатов УДАЛИТЬ все просроченные cer ЮЛ, содержащие кавычки.

3. Если остались действующие cer ЮЛ с кавычками - установить К-АП версии 3.7.5. 514 (прямая ссылка для скачивания -files.apksh.net/s/install/download?path=. ent_AP_3.7.5.514.exe ) через bat-файл БЕЗ брандмауэра и криптопровайдера Security Code во избежание дальнейших проблем с подписанием документов в СУФД ("тихая" установка) следующего содержания:

После окончания ОБЯЗАТЕЛЬНО перезагрузить компьютер!

4. При настройке аутентификации НЕ ИМПОРТИРОВАТЬ сертификат пользователя К-АП, а ВЫБРАТЬ ИЗ СПИСКА (он не очищается при переустановке К-АП разных версий) и нажать "ОК". Проверить соединение (разумеется, предварительно настроив его по DNS имени вместо IP адреса).

Именно такими окольными путями удалось заставить работать К-АП_3.7.5. 514 под КриптоПро-4.0. 9842 даже под Windows 7 Home Basic и XP sp3!

ful пишет: Из нашего УФК сообщили, что Континент не работает с 2012 гостом на Крипто про. Для этого рекомендуют ставить Континент с встроенным криптопровайдером, чтоб через него, потом генерировать ключи по новому госту.

В связи с тем, что эта печальная новость подтверждена разработчиками и криптопровайдер понадобится таки для генерации ключей КАП по новому ГОСТ для минимизации глюков остаётся ставить Криптопро и Континент АП последних версий с криптопровайдером. На текущий момент это: 4.0.9955 и 3.7.7.651 соответственно.

Если всё пробовали и ничего не помогло:
Удаляем всё и пробуем ставить КриптоПро и Континент АП последних версий .
На текущий момент это: 4.0.9955 и 3.7.7.651 соответственно.

Для Windows XP

x3n0b4t3 24.08.2018 14:44

Для тех, кто все еще использует Windows XP и устанавливает версию 3.7.7 : может возникнуть проблема с отсутствием модема, не решаемая переустановкой. В диспетчере устройств будет не работающее "Continent 3 PPP Device", при попытке задействовать ругается на драйвер. Подложил файл драйвера от предыдущей версии (в моем случае от 3.7.2) - cont3ppp.sys в C:\Windows\system32\drivers\, его же нужно исключить из integrity.xml, иначе не пройдет проверку целостности. Потом пересоздаем подключение.

Обход ограничений

Эксперименты проводить только убедившись в нормальном функционировании в штатном режиме
(***) Любителям виртуальных отчуждаемых носителей гуглить OsfMount

Правда, из 10 попыток было 8 удачных, а два раза так не получилось. Сильно не разбирался, но кажется не та версия vipnetcsp была, но обновлять поленился, ибо было некритично нужно.

(9) 4
(12) Спасибо, попробую!
(13) На флешке после форматирования записал файл <многобукв>.cer (16) мда.. тяжелый случай. Не, я понимаю, что последствия ДЦП не лечатся, но.. надеялся на лучшее. Твое 4 - ни о чем. Твое 5 - ровно о том же. Вот у меня, например - 5.0.12000 КС1 - это понятно, а
у тебя .. хм.. точно наглядная демонстрация анекдота - "Петька, прибор? 4-!! Чего 4? А чего прибор?"

(16) На флешке после форматирования записал файл <многобукв>.cer

это у вас не контейнер. Контейнер - выглядит как папка, помеченная как скрытая. Т.е. со стандартными настройками проводника его вообще не увидишь.
Создать его на флешке можно, например, скопировав на нее другой с помощью сервисных утилит Крипто-Про или какими-либо другими сервисными средствами крипто-про.
Просто копировать эту папку средствами проводника бесполезно, контейнер так не скопируется, там идет привязка к носителю.

(16) >> На флешке после форматирования записал файл <многобукв>.cer

to all, расходимся.
Ветка на пятничную не тянет, ибо грешно смеяться над больным человеком.

PS: Автор, а ты медитируй над (8) до полного посинения.

ps: ps: И да, если копию флэшки перед форматированием не делал, то все.
Генерируй ЭЦП заново. сочувствую.

<многобукв>.cer - это экспортированный публичный сертификата который в реестра ставится
сам приватный ключик в контейнере выглядит не так, там от криптовайдера зависит как, обычно папочка с разными файликами
если экспортировать ключик через ослика то будет .pfx (20) брешешь. :)))
а) нифига она не скрытая.
б) копируется аж бегом.
с) б) верно в случае, есть ключ помечен как экспортируемый. (23)+
д) если не помечен как экспортируемый, можно перевыпустить (никуда не ездя) и будет экспортируемый (20) Что-то мне мой эффект манделы подсказывает, что в старых версиях криптпро привязка ключа к носителю таки была, и просто так его было не скопировать, не распознавался. (23) может быть, сейчас что-то поменялось. Я пробовал когда-то копировать лет 10 назад - оно копируется, да.
Но контейнер потом крипто-про не видит. имеется в виду - тот что скопировали на новый носитель а средствами крипто-про копируешь - тогда все норм. Только папка уже на новом носителе по-другому называется :) (27) Ну, последнее время эту папку с именем из букв и цифр просто копируешь куда попало на диск, который винда считает сменным - и этот ключ криптопро видит и позволяет привязать его к сертификату я сертификат из 1сфреш сохраняю потому что кто-то его туда установил, а он не "облачный". (25) начиная с крипто про 3.0 (раньше я просто не пробовал, потому насчет криптопро 2 сказать не могу), можно было копировать (при условии, что ключ помечен, как экспортируемый).
Просто надо убить в хранилище сертификатов старый сертификат с привязкой к старому носителю и установить в хранилище его же заново, с привязкой к новому носителю. И все. (35) на другой машине пробовали, где такого серта точно нет и никогда не устанавливался. Крипто-про просто не видит этого контейнера, пока не скопируешь его средствами через копирование контейнера. (35) Не канает. Даже если принудительно задать путь к хранилищу сертификатов "F:\" - он его не видит, хотя на других уже вставленных флешках с другими буквами старые контейнеры видит. (35) Даже и убивать старый не надо, просто переустановить сертификат, он найдет новый ключевой носитель и предложит привязаться к нему. (36) Да. Но контейнера нет! Есть только сертификат.
(38) Не хочет, гад! (( (39) Уже много лет копируем просто как папку, и всё работает. Когда-то, действительно было так, что криптопро "не свою" копию не видел. (40) Только сертификат без контейнера бесполезен. Это в контейнере закрытого ключа может быть интегрирован сертификат. Но не наоборот.. (44) если помечен как экспортный то можно и просто копировать (45) Не, ну это были еще дискеты, крипто про наверно еще 2, а какие были ключи (экспортируемые или нет) сейчас уже и не скажу. Но WINIMAGE, тогда еще 4-й, все это замечательно обходил :)
Сейчас WINIMAGE уже 10-й, но давно не пользуюсь, возможности нынешние не знаю. (45) Так неэкспортируемый и средствами криптопро нельзя копировать (37) >> Даже если принудительно задать путь к хранилищу сертификатов "F:\"
хранилище сертификатов не бывает "F:\"
:))
хранилище может быть личное, доверенные корневые, промежуточные и еще куча мала . Кроме того, хранилище может быть на пользователя или на компьютер.

(47) прикинь, а любой программулькой, которая делает точный дубликат носителя, можно :) Тем же WINIMAGE, если это дискетка или флэшка.
А если этот неэкспортируемый ключ в реестре, то прекрасно копируется тупо ветка реестра. На другой комп.:)

Единственное, что я не поборол, это как скопировать неэкспортируемый ключ из ru-токена. Других токенов (e-token, Ja-carta, под рукой для экспериментов нет, но, полагаю, тоже нельзя).

(49) В виде образа конечно скопировать можно. А у токенов не у всех версий неизвлекаемость "железная", на большинстве такой же флажок "не копировать", и через апи его можно прочитать, а значит и скопировать при необходимости. Но есть токены, которые ключ наружу не отдают вообще, в них встроен криптопроцессор, наружу выдают только результат подписи или шифрования.. вот с них ключ никак не вытащить.

(50) вот-вот.
Сейчас получил ключик для себя как ИП, в ФНС, на простой ru-token лайт, без криптопроцессора, и теперь вот, как будет время, хочу попытаться его вытащить оттуда. Так то не особо горит, но чисто любопытства ради. Свой ключик, свой ру-токен, своя подпись, даже если испорчу, никому хуже не сделаю. :) Специально сделал себе пораньше, одним из первых, в ФНС, для эксперимента. :)

У меня, если что, для ИП меня еще от контура ключик имеется :)

Кстати. Хочу сказать, что недостоверно они на сайте ФНС пишут. Там на сайте сказано, что поддерживают почти все виды ru-токенов, а на практике вышло, что мне инспектор не смогла сгенерировать ЭЦП на Rutoken-S, зато смогла на Rutoken Lite.

Подозреваю, что драйвер ru-токена хоть и универсальный, но при первом втыкании каждого типа рутокена доустанавливается что-то конкретно под этот тип, а у инспектора права юзера ограничены. Так что в разных инспекциях (даже на разных компах) инспекторы наверно могут писать ЭЦП на разные ру-токены, имейте это ввиду.
В нашей я точно убедился, что на Rutoken-S НЕ пишут.
Сертификат соответствия ФСТЭК России в комплекте (с голограммой и номером экземпляра) - сказала и наф ей не нужен. Поэтому обошелся я б/ушным рутокеном, завалялись у меня с пяток разных, благо как кто под руку шепнул, взял все с собой в ИФНС, кога шел ЭЦП делать.

Коллеги! Сменили ЭЦП. Ставила их методом тыка в октябре 2015.
Скажите - что делать при такой ошибке. Заранее благодарна Откликнувшимся.

У меня была несколько раз такая ситуация. Контейнер скорее всего поврежден или еще чтою Менял эЦП.

У меня была несколько раз такая ситуация. Контейнер скорее всего поврежден или еще чтою Менял эЦП.

1. вставляем флешку, 2. открываем крипто вкладка-оборудование добавляем считыватели съемный диск, 3. вкладка-сервис установить личный сертификат - в обзоре ищем файл сертификата на флешке - установить, установить в контейнер (выставить автоматически найти контейнер) - ок.

1. вставляем флешку, 2. открываем крипто вкладка-оборудование добавляем считыватели съемный диск, 3. вкладка-сервис установить личный сертификат - в обзоре ищем файл сертификата на флешке - установить, установить в контейнер (выставить автоматически найти контейнер) - ок.

интересно. Надо сохранить.

написал на память) вполне возможно, что где-то и упростил.

вы сейчас пытаетесь его установить?

Возможно эцп сделаны для новой версии криптопро.
Если у вас стоит 3.6, то сертификаты сгенерированные в новой версии АРМ Генерации ключей не будут видеться в версии 3.6
Попробуйте поставить версию 3.9, возможно, подпись увидится

Бывают случаи, когда человек генерирует подпись на одном компьютере, закидывает контейнер в реестр компьютера, а потом пытается установить эцп на другом компьютере и у него соответственно ничего не получается.
Это тоже важно, место где генерацию делали

Бывают случаи, когда человек генерирует подпись на одном компьютере, закидывает контейнер в реестр компьютера, а потом пытается установить эцп на другом компьютере и у него соответственно ничего не получается.
Это тоже важно, место где генерацию делали

мне генерировали подпись на одном пк, затем я установил и скопировал её со флешки в реестр своего пк, затем с той же флешки на все пк в бухгалтерии (для страховки), никаких проблем не возникло.

мне генерировали подпись на одном пк, затем я установил и скопировал её со флешки в реестр своего пк, затем с той же флешки на все пк в бухгалтерии (для страховки), никаких проблем не возникло.

я имею ввиду, если генерацию провели на одном компьютере и закинули в реестр контейнер от подписи туда же, а потом когда получили сам Сертификат на флешку и пытаются установить его на втором компьютере, то чуда уже не будет

я имею ввиду, если генерацию провели на одном компьютере и закинули в реестр контейнер от подписи туда же, а потом когда получили сам Сертификат на флешку и пытаются установить его на втором компьютере, то чуда уже не будет

а что мешает в таком случае с первого компа скопировать из реестра эцп на новую флешку? и перенести её уже на кучу др. компьютеров, если есть желание.

а что мешает в таком случае с первого компа скопировать из реестра эцп на новую флешку? и перенести её уже на кучу др. компьютеров, если есть желание.

ничего. Просто когда люди получают сам сертификат и при попытке установить получают ошибку, делают большие глаза и говорят, что они вообще не вкурсе где и что вообще лежит

а что мешает в таком случае с первого компа скопировать из реестра эцп на новую флешку? и перенести её уже на кучу др. компьютеров, если есть желание.

Mister, пару раз уже сталкивался с подобным, приходилось потом правду выпытывать их тех, кто вообще подпись генерировал

вы сейчас пытаетесь его установить?

да ( как вы написали сделала. не видит флеш (

Mister, пару раз уже сталкивался с подобным, приходилось потом правду выпытывать их тех, кто вообще подпись генерировал

ахах))) у меня уже на уровне рефлексов всё выработано, если скажут описать словами подробно то всё точно не вспомню, а если увидеть глазами и мышку в руки, то делается на автомате)))

а что мешает в таком случае с первого компа скопировать из реестра эцп на новую флешку? и перенести её уже на кучу др. компьютеров, если есть желание.

я копию сделала на всякий случай. а то я уже 1 раз эцп на флешке искупала в луже по осени. ученая. вопрос. блин. сейчас вот новую эцп не могу установить.

вопросы

Такую ошибку несложно устранить без вызова специалиста или обращения в службу поддержки. Алгоритм действий, направленных на решение этой проблемы, приводится ниже.

Что может послужить причиной такой ошибки

ошибка в контейнере закрытого ключа и причины её появления

  • установка сертификата впервые;
  • экспортирование данных на внешний носитель;
  • попытка просмотра ключей в контейнерах ключей;
  • загрузка информации на компьютер извне.

В целях устранения ошибки обычно бывает достаточно произвести корректную ручную переустановку сертификата.

Решение ошибки: отсутствие электронного сертификата в контейнере закрытого ключа

Для начала запускаем «КриптоПро» нажатием кнопки «Пуск». Затем выбираем «Настройку», в возникающем на мониторе окне заходим в опцию панели управления, далее «сервис – установить личный сертификат».

программа криптопро предложит указать место хранение сертификата

Далее, через кнопку «обзор» указываем путь, где сохранен открытый ключ – файл с расширением *.cert или *.crt

Необходимо выбрать файл и открыть его с помощью криптопро

Жмём «Далее», в мастере установки сертификата мы увидим путь, который указывали до нашего сертификата.

Убедившись, что криптопро верно распознало путь установки сертификата, подтверждаем установку

Нам отображается информация, содержащаяся в открытом ключе на пользователя, жмём «далее»

Перед импортом сертификата надо проверить содержащуюся в нем информацию

В следующем окне можно воспользоваться двумя путями поиска нужного контейнера закрытого ключа:

  • «найти контейнер автоматически
  • вручную через «обзор»

В первом случае КриптоПро на основе данных из открытого ключа подберет закрытый, в случае с ручным поиском нужно будет знать название закрытого ключа, чтобы выбрать его для установки

Мы рекомендуем использовать функцию КриптоПро «найти контейнер автоматически» или указать его вручную через «обзор»

Самый простой вариант выбрать автоматический поиск, затем после «обнаружения» необходимого контейнера, мы увидим заполненную строчку с его именем и после жмём «Далее»

после того, как указан контейнер, можно продолжить установку

Личный сертификат пользователя всегда устанавливается в хранилище «Личное», можно выбрать как вручную, так и КриптоПро может сделать это за вас по умолчанию, затем подтверждаем установку цепочки сертификатов и жмём «Далее»

Важно! Не забудьте поставить галку в настройках КриптоПро «установить сертификат (цепочку сертификатов) в контейнер

>

В случае успешной установки КриптоПро выдаст окно с информацией об окончании процедуры и жмём «Готово»

Можно завершать установку сетификата

Затем появится окно с подтверждением данной операции, жмём «ДА»

Криптопро предложит перезаписать сертификат – соглашаемся

В следующем окне увидим информацию о том, что процесс окончен успешно. Сертификат установлен в контейнер закрытого ключа.

Готово. Сертификат установлен

Особенности версий КриптоПро

С января 2019 года квалифицированные сертификаты могут выпускаться только по ГОСТ 2012, выпуск по другому ГОСТу прекращен. Мы об этом писали ранее в статье. Важно помнить, что версии криптопро на ГОСТ 2012 работают только с версии 4.0 и выше. Все старые версии КриптоПро, для нормальной работы, потребуется обновить или заменить на актуальную. Сделать это нужно не позднее 31 декабря 2019 года.


Новые версии Python разрабатывают всё время. Но каждый раз компилировать его самому, чтобы попробовать новую версию, довольно обременительно.

Выход из этой ситуации прост — запускать различные версии Python через Docker.

Из этого руководства вы узнаете:

Docker и версии Python

С прекращением поддержки Python 2.7 в 2020 году, долгий переход от Python 2 к Python 3 вошел в финальную фазу. Однако, двигаясь вперёд, важно знать о различных версиях Python и о том, как их опробовать.

Типы версий Python

  1. Официальные релизы (Released versions). Обычно, в этом случае речь идёт о чём-то вроде Python 3.6, 3.7 или 3.8. В каждой из этих версий добавлены новые возможности. Поэтому, чтобы правильно оценивать функционал, нужно знать, какая именно версия релиза запущена. К примеру, f-строки (метод форматирования f-strings) ввели в Python 3.6. На более ранних версиях он не работает. Подобным образом, выражения присваивания доступны только начиная с Python 3.8.
  2. Разрабатываемые версии (Development versions). Сообщество Python постоянно работает над новыми версиями. Пользователям доступны разрабатываемые версии, отмеченные как альфа, бета и релиз-кандидат (release candidate).
  3. Реализации (Implementations). Python — язык, имеющий несколько вариантов дополнительных реализаций на основе вышедших официальных версий. Каждая из них содержит интерпретатор и соответствующие библиотеки. CPython — эталонная реализация Python, ее используют чаще всего. Тем не менее есть и другие реализации, ориентированные под специфические нужды. Среди них PyPy, IronPython, Jython, MicroPython и CircuitPython.

Версию используемого Python можно увидеть при запуске интерпретатора REPL. Можно также получить дополнительную информацию c помощью команды «sys.implementation».

Как видно, код выполнен на первой альфа-версии CPython 3.9.

Традиционно для управления различными версиями Python используются инструменты вроде «pyenv» и «conda». В большинстве случаев их может заменить Docker. И он часто оказывается проще в использовании. Ниже мы практически покажем, как это сделать.

Использование Docker

Docker — мощная платформа для запуска контейнеров с предварительно упакованными приложениями. Она популярна в сфере упаковки и развёртывания приложений и микросервисов. В этом разделе мы сделаем краткий обзор основных шагов, которые нужны, чтобы начать работу с Docker.

Установка Docker

Docker доступен для всех основных ОС: Windows, macOS и Linux. Инструкции по установке Docker на конкретную систему можно найти в их официальных руководствах.

Если специфических требований нет, можно использовать ядро приложения — Docker Engine — в свободно распространяемой «общественной» редакции (Community Edition).

Запуск контейнеров

Работа Docker основана на двух базовых элементах — образах и контейнерах.

  • Образ — автономный пакет, который может выполнить Docker.
  • Контейнер — выполняемый образ с определённым состоянием (как пользовательский процесс).

Есть несколько репозиториев, содержащих предварительно собранные образы для Docker. Самым распространённым является Docker Hub — публичный репозиторий, который будет использоваться в данном руководстве по умолчанию.

Для примера установим образ «hello-world».

Создание собственных образов с помощью Dockerfile

С помощью Dockerfile можно создавать собственные образы. Это обычный текстовый файл, который описывает, как именно будет устанавливаться образ Docker.

Вот пример Dockerfile:

Файл Dockerfile состоит из перечня команд Docker. В приведённом выше фрагменте три шага:

  • Строка 1 создаёт на базе существующего образа под названием «ubuntu» новый. Она выполнима вне зависимости от ОС, на которой запущен Docker.
  • Строка 2 устанавливает программу под названием «cowsay».
  • Строка 3 задаёт команду, которая сразу запускает «cowsay» при выполнении образа.

Создание Dockerfile начинается с правильного сохранения — под именем «Dockerfile» без какого-либо расширения.

Примечание. Создавать и запускать образы Linux можно на любой платформе. Поэтому такие образы, как «ubuntu», прекрасно подходят для разработки кросс-платформенных приложений. В то же время образ Windows запустится только на Windows, а образ macOS — только на macOS.

Далее создаём при помощи Dockerfile образ:

Теперь образ Docker можно выполнить:

Примечание. Вывести список ваших образов и контейнеров можно, используя команду «docker ps -a».

И образ, и контейнер имеют 12-символьный идентификатор «ID», который можно найти в результатах выполнения этих команд. Чтобы удалить образ или контейнер, можно использовать «docker rmi <ID образа>» либо «docker rm <ID контейнера>», указав их правильный идентификатор.

Запуск Python в контейнере Docker

Сообщество Docker выпускает и поддерживает релизы в виде файлов Dockerfile для всех новых версий Python. Опробовать новые функции Python можно, воспользовавшись ими.

Кроме того, ключевые разработчики Python поддерживают образы Docker со всеми доступными на настоящий момент версиями. Далее расскажем, как запустить разные версии Python через Docker.

Запуск REPL

При запуске образов Python из Docker Hub, открывается интерпретатор REPL, в котором будет проходить дальнейшая работа. Чтобы открыть его в контейнере Python, следует выполнить следующую команду:

Эта команда скачает образ «python:rc» с сайта Docker Hub, сделает на его основе контейнер и уже в нём выполнит команду «python».

Опции «-it» необходимы для интерактивного запуска контейнера. Тег «rc» означает «релиз-кандидат» и указывает на последнюю разрабатываемую бета-версию Python. В нашем случае это последний релиз-кандидат Python 3.8:

При первом запуске контейнера Python на его скачивание может потребоваться некоторое время. Но дальнейшие вызовы уже будут происходить практически мгновенно. Выйти из интерпретатора REPL можно, введя « exit() ». Одновременно произойдёт выход из контейнера.

Примечание. Образы Python для Docker Hub поддерживаются в достаточно актуальном состоянии. По мере готовности, альфа- и бета-версии становятся доступны под тегом «rc».

Если нужно опробовать самые последние версии Python, то больше подойдёт образ от ключевых разработчиков:

В хранилище Docker Hub можно найти полный список доступных образов Python. Последняя версия Python (стабильная) доступна как « python:latest », а свежая разрабатываемая версия — как « python:rc ».

Также можно запросить и точные версии. Например, «python:3.6.3» или «python:3.8.0b4», т.е. четвёртую бету Python 3.8. Можно даже запустить последнюю реализацию PyPy, используя теги вроде « pypy:latest ».

Настройка рабочей среды Python в Docker

Контейнер Docker представляет собой изолированное окружение. Таким образом, добавлять внутри контейнера виртуальную среду обычно не требуется. Вместо этого, для установки необходимых модулей Python в Docker можно запустить непосредственно систему управления пакетами pip.

Чтобы модифицировать контейнер включением дополнительных пакетов, используется Dockerfile. В приведенном ниже примере в образ Python 3.7.5 добавляются пакеты «parse» и «realpython-reader».

Этот файл нужно сохранить под именем «Dockerfile». Тег «-slim» в первой строке показывает, что Dockerfile исходит из минимальной установки дистрибутива Debian. Этот тег задаёт существенно меньший размер образа Docker. Недостаток в том, что может потребоваться устанавливать дополнительные инструменты самому.

Помимо этого, в число тегов входят такие, как «-alpine» и «-windowsservercore». Подробную информацию о таких вариациях образа можно найти на Docker Hub.

Примечание. Если нужно использовать внутри контейнера Docker виртуальную среду, есть одно важное предостережение. Каждая команда «RUN» выполняется как отдельный процесс.

Типичная активация виртуальной среды в Dockerfile работать не будет. Вместо этого необходимо активировать виртуальную среду вручную, задав переменные среды «VIRTUAL_ENV» и «PATH»:

Чтобы собрать и выполнить свой Dockerfile, необходимо использовать следующие команды:

Образу будет задан тег «rp». Затем он будет использоваться для открытия созданного образа из сеанса интерпретатора REPL. Можно убедиться, что в контейнер установлен пакет «parse».

Также можно запускать контейнеры, выполняющие отдельные команды:

Вместо запуска интерпретатора REPL, внутри контейнера «rp» выполняется команда «realpython». Она выводит список последних руководств, опубликованных на специализированном сайте Real Python.

Запуск Python скрипта в Docker

В этом разделе мы расскажем, как запускать скрипты внутри Docker.

Прежде всего, следует сохранить приводимый пример скрипта у себя на компьютере в файл под названием «headlines.py».

Сначала этот скрипт скачивает последнее руководство с сайта Real Python. Затем он использует пакет «parse», чтобы найти все заголовки и вывести их на терминал.

Есть два основных способа запускать такие скрипты в контейнере Docker:

  1. Смонтировать локальный каталог в качестве тома (volume) контейнера Docker.
  2. Скопировать скрипт в нужный контейнер.

Первый вариант особенно удобен при тестировании, поскольку не нужно собирать образ Docker заново при каждом изменении скрипта. Для монтирования каталога в качестве тома, используйте опцию «-v»:

Если же скрипт будет использован на другом компьютере, нужно скопировать его внутрь контейнера. Это можно сделать, добавив в Dockerfile пару шагов:

Опцией «WORKDIR» внутри контейнера задается рабочий каталог, в котором будут выполняться команды. Можно скопировать файл «headlines.py» в этот каталог внутри контейнера, после чего изменить команду по умолчанию на выполнение «headlines.py» с помощью «python».

Соберите образ, как обычно. Остается лишь запустить контейнер:

Обратите внимание, поскольку в Dockerfile была указана команда «CMD», при запуске контейнера сразу выполняется нужный скрипт.

Подробности о том, как создавать собственные файлы Dockerfile — в описании образа Python на сайте Docker Hub.

Заключение

Это руководство — краткое введение в работу с различными версиями Python при использовании Docker. Оно поможет быстро протестировать код и убедиться, что он совместим с последними версиями Python.

Изучив эту инструкцию, вы сможете:

  • Запускать интерпретатор Python REPL при помощи Docker.
  • Настраивать среду Python внутри образа Docker.
  • Запускать внутри контейнеров Docker скрипты.

Поместить скрипт Python в Docker контейнер — дело пары минут. Теперь опробовать последнюю альфа-версию языка можно сразу после публикации.

Нужна надёжная база для разработки программных продуктов? Выбирайте виртуальные сервера от Eternalhost с технической поддержкой 24/7 и бесплатной защитой от DDoS!

Читайте также: