После первого запуска контейнера python-script-service сервиса в папке /docker-volume/python-script-service сервиса будет создан файл start-script.sh - – это файл скрипта, который будет запускаться при запуске контейнера. В нём может быть написана логика настраивающая контейнер, может быть установлен нужный интерпретатор python и установлены нужные пакеты.
Настройка пути до интерпретатора python
Чтобы настроить путь до интерпретатора python, который будет вызывать сервис, есть несколько вариантов (перечислены в порядке увеличения приоритета от меньшего к большему):
По умолчанию под Linux сервис будет использовать путь "/usr/bin/python", а под Windows "C:\Program Files (x86)\Python38-32\python".
Если в системе определена переменная окружения с именем "SCRIPTEXECUTOR_PythonPath", то её значение будет использовано, как путь до интерпретатора.
В папке шары сервиса есть файл config.json, если в нём указать значение свойства "PythonPath", то будет использовано оно.
Настройка окружения в закрытом контуре
Так как сервис позволяет выполнить собственный bash-скрипт при запуске docker-контейнера, который будет иметь доступ к docker-контейнеру под администраторскими правами и папке хостовой машины, доступной через шару (настраивается при запуске docker-контейнера), то есть множество способов настроить docker-контейнер сервиса, без интернета.
Например, можно использовать offline-репозиторий: https://help.ubuntu.com/community/AptGet/Offline/Repository/.
А для установки python-пакетов без интернета, использовать wheel: https://dizballanze.com/ru/python-wheels-dlia-bystroi-ustanovki-zavisimostei/.
Также возможна установка напрямую из исходного кода: https://www.tecmint.com/install-python-in-linux/.
Какой способ установки выбрать?
У вас есть несколько способов развернуть нужное вам программное обеспечение в сервисе выполнения скриптов, выбирайте тот способ, который вам будет проще использовать в вашей конкретной ситуации, нельзя дать однозначную рекомендацию, какой способ использовать, так как в каждом конкретном случае могут быть свои нюансы, которые могут повлиять на выбор. Если вы не знаете какой способ выбрать, то ниже даны наши рекомендации.
...
Скорее всего самым простым способом установить python-пакет будет способ установки с использованием wheel - – выбирайте его тогда, когда этот пакет можно поставить с использованием pip, поищите . Поищите этот пакет на сайте: https://pypi.org/ или информацию о об установке через pip на странице этого пакета, а дальше посмотрите пример установки pytorch через wheel и затем адаптируйте инструкцию к установке того конкретного пакета, который вам нужно установить. Важным нюансом установки через wheel является то, то что вам нужно выяснить полный список пакетов, от которых зависит пакет, который вы ставите и явно прописать этот список в файл requirements.txt. Чтобы выяснить этот список, вы можете, например, установить нужный вам пакет через pip на свежеустановленной операционной системе такой же, какая используется сейчас в сервисе выполнения скриптов (на данный момент это Ubuntu Bionic) и посмотреть какие пакеты дополнительно при этом ставятся.
...
Если в репозитории он тоже отсутствует, то остаётся способ установки с использованием исходного кода - – идите на страничку нужного вам пакета и ищите инструкцию по установке из исходников, если инструкции там нет, то нужно поискать эту инструкцию с использованием какого-либо поисковика, например google.com.
...
Рекомендуем установку из исходников, пример установки интерпретатора python приводится ниже.
Установка интерпретатора python из исходников
Находим ссылку на исходники нужной нам версии python: https://www.python.org/downloads/release/.
Я буду устанавливать версию 3.7.5: https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz.
На машине имеющей доступ к интернету скачиваем их:
Блок кода |
---|
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tar.xz |
Переносим на машину, не имеющую доступа к интернету, и кладём их в папку доступную для сервиса выполнения скриптов. Выполняем команду:
...
Обратите внимание, что для того, чтобы сервис использовал его, необходимо в config.json сервиса выполнения скриптов написать путь до нового установленного интерпретатора: "/usr/local/bin/python3".
Скрипт для проверки используемой версии python:
Блок кода |
---|
import sys print(sys.version) |
Установка пакета pytorch для интерпретатора python 2.7 с использованием wheel
Работы происходят на машине, имеющей доступ к интернету
...
1.2 Создаём папку wheels2:
Блок кода |
---|
# mkdir wheels2 |
1.3 Создаём файл requirements.txt:
Блок кода |
---|
# touch requirements.txt |
1.4 На сайте pytorch смотрим как установить его через pip: https://pytorch.org/get-started/locally/#start-locally.
Для python 2 нужно выполнить команду:
...
1.7. Копируем файл requirements.txt в папку wheels2.
Теперь все необходимые пакеты находятся в папке wheels2, скачиваем эту папку на накопитель и переносим на машину, на которой отсутствует доступ в интернет.
2. Работы происходят на машине, не имеющей доступ к интернету (в закрытом контуре)
...
2.3 Перезапустить сервис выполнения скриптов.
Теперь при запуске docker-контейнера будет установлен pytorch.
...
Блок кода |
---|
import torch result = torch.cuda.is_available() |
Установка пакета pytorch для интерпретатора python 3.6 с использованием wheel
На машине имеющий доступ к интернету устанавливаем python 3, pip и wheel.
Блок кода |
---|
apt-get update && apt-get install -y python3-pip pip3 install wheel |
На сайте pytorch смотрим, как установить его через pip: https://pytorch.org/get-started/locally/#start-locally.
Для python 3 нужно выполнить команду:
...
Выполнять её не будем, просто возьмём оттуда названия пакетов, которые нам нужны.
Создаём папку wheels3:
Блок кода |
---|
mkdir wheels3 |
Создаём файл requirements.txt:
Блок кода |
---|
touch requirements.txt В файл requirements.txt записываем следующий текст (названия пакетов, которые нужно установить): torch==1.3.1+cpu torchvision==0.4.2+cpu |
...
Теперь все необходимые пакеты находятся в папке wheels3, скачиваем их на носитель и переносим на машину, на которой отсутствует доступ в интернет и затем копируем их в папку, которая доступна с хостовой машины в сервис выполнения скриптов, в моём случае это папка:
...
Проверить установку можно попробовав, запустив в сервисе скрипт:
...