Где настраивается python-script-service
Для более удобного взаимодействия с файловой системой контейнера была создана точка монтирования, позволяющая загружать внутрь него файлы, а также сохранять их между перезапусками контейнера.
Путь к точке монтирования на хосте:
/var/lib/docker/volumes/start-script.sh/visiology3_python-script-service-3_data/
Путь к точке монтирования в контейнере:
/mnt/volume
Стартовый скрипт start-script.sh
находится в корне примонтированной директории и выполняется каждый раз при запуске контейнера с сервисом. В него можно добавить необходимые вам команды, такие, как загрузка и установка пакетов, выполнение скриптов и прочее.
Файл конфигураций config.json
также находится в корне примонтированной директории. В нем можно настроить путь до интерпретатора Python (см. ниже).
Выполнение настроек
После первого запуска контейнера python-script-service сервиса в папке /docker-volume/python-script-service сервиса будет создан файл start-script.sh – это файл скрипта, который будет запускаться при запуске контейнера. В нём может быть написана логика настраивающая контейнер, может быть установлен нужный интерпретатор python Python и установлены нужные пакеты.
Настройка пути до интерпретатора
...
Python
Чтобы настроить путь до интерпретатора pythonPython, который будет вызывать сервис, есть несколько вариантов (перечислены в порядке увеличения приоритета от меньшего к большему):
...
Например, можно использовать offline-репозиторий: https://help.ubuntu.com/community/AptGet/Offline/Repository/.
А для установки pythonPython-пакетов без интернета, использовать wheel: https://dizballanze.com/ru/python-wheels-dlia-bystroi-ustanovki-zavisimostei/.
Также возможна установка напрямую из исходного кода: https://www.tecmint.com/install-python-in-linux/.
Установка библиотек для Python без доступа в интернет
На компьютере с доступом в интернет установить Python той же версии, что и на ВМ.
Заполнить файл
requirements.txt
с необходимыми библиотеками. Пример файлаrequirements.txt
:Блок кода requests==2.31.0 setuptools==59.2.0 wheel==0.37.0
Загрузить необходимые пакеты в указанную папку:
Блок кода pip3 download -r ./requirements.txt --dest /mnt/volume/packages
Добавить в скрипт
start-script.sh
команду оффлайн-установки пакетов из указанной папки:Блок кода pip3 install --no-index --find-links=/mnt/volume/packages -r /mnt/volume/requirements.txt
Перезапустить платформу.
Итоговый вариант скрипта start-script.sh
с оффлайн-установкой библиотек:
Блок кода |
---|
#!/bin/sh
current_path=$(pwd)
# Установка Python 3.8.16 из скачанных ранее исходников
apk add make
cd /mnt/volume/Python-3.8.16
./configure --enable-optimizations
make
make install
# Установка пакетов из скачанных ранее файлов
pip3 install --no-index --find-links=/mnt/volume/packages -r /mnt/volume/requirements.txt
# Возврат в папку выполнения сервиса скриптов
cd $current_path |
Вариант скрипта для Red OS:
Блок кода |
---|
#!/bin/sh
current_path=$(pwd)
# Установка Python 3.8.16 из скачанных ранее исходников
dnf add make
cd /mnt/volume/Python-3.8.16
./configure --enable-optimizations
make
make install
# Установка пакетов из скачанных ранее файлов
pip3 install --no-index --find-links=/mnt/volume/packages -r /mnt/volume/requirements.txt
# Возврат в папку выполнения сервиса скриптов
cd $current_path |
Скрипт для проверки используемой версии Python:
Блок кода |
---|
import sys
print(sys.version) |
Какой способ установки выбрать?
У вас есть несколько способов развернуть нужное вам программное обеспечение в сервисе выполнения скриптов, выбирайте тот способ, который вам будет проще использовать в вашей конкретной ситуации, нельзя дать однозначную рекомендацию, какой способ использовать, так как в каждом конкретном случае могут быть свои нюансы, которые могут повлиять на выбор. Если вы не знаете какой способ выбрать, то ниже даны наши рекомендации.
Необходимо установить
...
Python-пакет
Скорее всего самым простым способом установить pythonPython-пакет будет способ установки с использованием wheel – выбирайте его тогда, когда этот пакет можно поставить с использованием pip. Поищите этот пакет на сайте: сайте https://pypi.org/ или или информацию об установке через pip на странице этого пакета, а дальше посмотрите пример установки pytorch через wheel и затем адаптируйте инструкцию к установке того конкретного пакета, который вам нужно установить. Важным нюансом установки через wheel является то, что вам нужно выяснить полный список пакетов, от которых зависит пакет, который вы ставите и явно прописать этот список в файл requirements.txt. Чтобы выяснить этот список, вы можете, например, установить нужный вам пакет через pip на свежеустановленной операционной системе такой же, какая используется сейчас в сервисе выполнения скриптов (на данный момент это Ubuntu Bionic) и посмотреть какие пакеты дополнительно при этом ставятся.
...
Если в репозитории он тоже отсутствует, то остаётся способ установки с использованием исходного кода – идите на страничку нужного вам пакета и ищите инструкцию по установке из исходников, если инструкции там нет, то нужно поискать эту инструкцию с использованием какого-либо поисковика, например google.com.
Необходимо установить
...
Python-интерпретатор
Рекомендуем установку из исходников, пример установки интерпретатора python Python приводится ниже.
Установка Python-интерпретатора
...
Находим ссылку на исходники нужной нам версии python: https://www.python.org/downloads/release/.
Я буду устанавливать версию 3.7.5: https://www.python.org/
Найти и скачать нужный архив с Python. Архивы можно найти на сайте Index of /ftp/python/
...
. Скачать архив можно вручную, либо следующей командой:
Блок кода wget https://www.python.org/ftp/python/3.
...
8.
...
16/Python-3.
...
8.
...
16.tar.xz
...
В инструкции для примера будет использована версия Python 3.8.16. Ее можно изменить на нужную вам.
Если на ВМ отсутствует доступ к сети Интернет, можно выполнить шаг 1 там, где доступ есть, и переместить скачанный файл на ВМ.
Распаковать архив:
Блок кода tar xJf Python-3.
...
8.
...
16.tar.xz
...
Отредактировать файл
/var/lib/docker/volumes/start-script.sh/visiology3_python-script-service-3_data/_data/start-script.sh
, вставив следующее содержимое:Блок кода #!/bin/sh current_path=$(pwd) # Установка Python 3.8.16 из скачанных ранее исходников apk add make cd /mnt/volume/Python-3.8.
...
16 .
...
/configure --enable-optimizations make
...
make install # Установка пакетов, указанных в requirements.txt pip3 install -r /mnt/volume/
...
requirements.txt # Возврат в папку выполнения сервиса скриптов cd $current_path
Вариант скрипта для Red OS:
Блок кода #!/bin/sh current_path=$(pwd) # Установка Python 3.8.16 из скачанных ранее исходников dnf add make cd /mnt/volume/Python-3.
...
Теперь при старте docker-контейнера будет установлен интерпретатор python 3.7.5.
Обратите внимание, что для того, чтобы сервис использовал его, необходимо в config.json сервиса выполнения скриптов написать путь до нового установленного интерпретатора: "/usr/local/bin/python3".
Скрипт для проверки используемой версии python:
...
8.16 ./configure --enable-optimizations make make install # Установка пакетов, указанных в requirements.txt pip3 install -r /mnt/volume/requirements.txt # Возврат в папку выполнения сервиса скриптов cd $current_path
Перезапустить платформу.
Установка пакета pytorch для интерпретатора
...
Python 2.7 с использованием wheel
Работы происходят на машине, имеющей доступ к интернету
1.1 Устанавливаем pythonPython, pip и wheel:
Блок кода |
---|
# apt-get update && apt-get install -y python-pip # pip install wheel |
...
Блок кода |
---|
import torch result = torch.cuda.is_available() |
Установка пакета pytorch для интерпретатора
...
Python 3.6 с использованием wheel
На машине имеющий доступ к интернету устанавливаем python 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 Python 3 нужно выполнить команду:
...