- Как запустить локальный скрипт Python на удаленной машине
- 3 ответа
- Как перестать беспокоиться и установить Python-проект другу под Windows
- Как я эти батники нашел
- Как это работает и как это настроить
- Переносимость
- Выводы
- Как перестать беспокоиться и установить Python-проект другу под Windows
- Как я эти батники нашел
- Как это работает и как это настроить
- Переносимость
- Выводы
Как запустить локальный скрипт Python на удаленной машине
У меня есть скрипт python на моей локальной машине. Есть ли способ запустить этот скрипт на удаленном компьютере. Я имею в виду скрипт python на локальном компьютере, но выполнение должно выполняться на удаленном компьютере и выводить результат на локальный компьютер.
Пожалуйста, добавьте некоторые детали относительно операционных систем, которые вы используете. Вы знакомы с SSH?
3 ответа
pathos пакет имеет инструменты, которые позволяют легко взаимодействовать с удаленными машинами, все непосредственно из python. и вы также можете легко захватывать сообщения stdout или другие ответные сообщения и возвращать их в ваш сценарий вызова.
Итак, скажем, у вас есть локальный скрипт hello.py который выглядит так:
# 'hello.py' import os print os.system('hostname')
Они вы можете нажать на скрипт и выполнить его следующим образом:
>>> import pathos >>> c = pathos.core.copy('hello.py', destination='guido.remote.com:~/hello.py') >>> s = pathos.core.execute('python hello.py', host='guido.remote.com') >>> print s.response() guido 0 >>> s.pid() 37429
Там также ssh-туннелирование, настройка процессов демона, удаленный трассировка портов и устранение удаленных процессов. если вам это нужно.
pathos обеспечивает абстракцию удаленных команд, по умолчанию это ssh и scp . но легко видеть, что он делает.
>>> s.message 'ssh -q guido.remote.com "python hello.py"' >>> c.message 'scp -q -r hello.py guido.remote.com:~/hello.py'
Вы можете найти решение для аналогичного вопроса здесь
По моей конкретной проблеме, с которой вы также можете столкнуться, у меня был этот локальный скрипт, который я хотел запустить на удаленной машине, используя одну из ее виртуальных окружений. Я добавил следующее к моему bashrc:
rpython ()< cat $1 | ssh [email protected] source /home/user/venv/bin/activate \; python - >
Таким образом, я могу запустить rpython local_script.py . Итак, вот как это работает: cat $1 | pipe первый аргумент и ssh [email protected] source/home/user/venv/bin/activate \; python — ssh [email protected] source/home/user/venv/bin/activate \; python — venv копии через ssh, что было venv , запускает виртуальную venv виртуальных venv удаленных компьютеров и запускает local_script.py . Обратите внимание, что все, что local_script.py может в конечном итоге распечатать, возвращается к локальному stdout.
TL, DR — это все, что вы пишете после того, как ssh [email protected] запускается на пульте дистанционного управления. Если вы хотите передать несколько инструкций оболочки, разделите их на \; чтобы не путать вашу локальную оболочку.
Существуют и другие возможные решения, включающие в себя модули python, такие как Fabric или Plumbum, которые могут оказаться полезными.
Как перестать беспокоиться и установить Python-проект другу под Windows
Итак, вы закончили свою первую версию опенсорс проекта на Питоне, выложили её на Гитхаб, и даже написали честный ридми: «Требуется Python 3.10, поставьте зависимости через pip install -r requirements.txt «.
И. через какое‑то время вам звонит пользователь друг с вопросом: «Слушай, интересный проект, а как его под Windows поставить?»
Собственно, с этого момента у вас есть 3 варианта:
- Попытаться сэкономить всем время и попробовать упаковать ваш проект в EXE‑файл через утилиты типа pyinstaller или Auto PY to EXE. Минус: при сколь‑нибудь сложных зависимостях нужно будет ковыряться довольно долго, чтобы заставить EXE заработать. Второй минус: как вы думаете, на кого ляжет почетная обязанность собирать EXE‑шники после каждого апдейта кода?
- Попытаться объяснить другу, что такое python, GIT и как всё это поставить. Минус: возможны проблемы в отношениях с другом:))) (Вариант: поставить всё самому через дистанционный доступ, но он требует слишком много времени если
пользователейдрузей больше 5) - Дописать под себя набор BAT‑файлов, о которых пойдет речь в статье, и которые:
- ставят сами Python и GIT в локальную папку проекта (в стиле conda);
- выкачивают свежую версию с Гитхаба (а также апдейтят её при необходимости);
- ставят нужные зависимости;
- можно прописать несколько сценариев запуска приложения;
- установленный проект можно перемещать в другие папки и между компами.
Как я эти батники нашел
Есть такой интересный опенсорс проект, который позволяет запускать текстовые нейросети на локальном компьютере с веб‑интерфейсом: https://github.com/oobabooga/text‑generation‑webui
Проекты с нейросетями, как правило, это проекты с очень большим числом нетривиальных зависимостей. Например:
- Вам нужно знать, нужно ли ставить версию torch с GPU ускорением от NVIDIA, или же надо ставить CPU‑версию.
- Часто нужно скачивать какие‑то кастомные дополнительные Github‑проекты библиотеки.
- Надо ставить нетривиальные версии библиотек (проект выше, например, использует кастомную сборку bitsandbytes под Windows, которая позволяет запускать 4-битные нейросети, требующие меньше памяти)
И я был сильно удивлен, когда нашел проект от того же пользователя под названием one‑click‑installers, который решал все эти проблемы установки буквально в несколько BAT‑файлов.
Собственно, я его установил (все заработало с первого раза), разобрался в BAT‑файлах, и они меня так впечатлили своей компактностью, что я даже достаточно быстро сделал подобный компактный инсталлятор для своего голосового помощника Ирины.
Как это работает и как это настроить
В качестве базового проекта рекомендую взять мой инсталлятор, а за нетривиальными случаями обращаться к оригинальному one‑click‑installer.
Итак, есть два основных файла:
- Скачивает проект micromamba (компактная замена conda). (Вначале выводится предупреждение — путь не должен содержать пробелов и нелатинских букв/цифр.)
- Устанавливает указанные пакеты (в частности, я указываю python3.10 и git; в моем BAT‑файле есть еще выбор, установить ли тяжелый torch для Silero TTS, но вы можете этот выбор убрать) в installer_files.
- Активирует окружение
- Если репозитория вашего проекта ещё не существует — клонирует его с Гитхаба; если уже существует — пытается обновить с помощью git pull.
- Устанавливает или обновляет зависимости через call python -m pip install -r requirements.txt —upgrade . (У меня используются кастомные зависимости в call python ‑m pip install ‑r requirements_exe_runner.txt ‑upgrade, так что не забудьте поправить для своего проекта)
Собственно, после install в идеале наш проект полностью готов к работе.
run предельно простой:
- Он инициализирует окружение с нужными зависимостями
- Запускает нужный питон‑файл через call python run.py (или что вы там укажете)
Также в проекте существует micromamba‑cmd.bat, который позволяет в интерактивном режиме зайти в текущее окружение и что‑то там подправить (например, поставить новые зависимости ручками если сильно нужно).
Переносимость
Установка переносимая; но после переноса в другое место будет выдавать ошибку «Micromamba not found» — потому что сформированные BAT‑файлы Micromamba содержат абсолютные пути.
Для решения проблемы после переноса нужно удалить все BAT‑файлы из installer_files\mamba\condabin и запустить run.bat — BAT‑файлы будут перегенерированы.
Выводы
install.bat выполняет основную часть установки, ставя зависимости через Интернет, позволяет быстро обновлять проект до последней Git‑версии, и занимает всего 90 строк кода.
Вот я с ним поработал и могу сказать — поправить его под свой проект занимает где‑то полчаса‑час (ну, вместе с тестированием мелочей, конечно).
Как перестать беспокоиться и установить Python-проект другу под Windows
Итак, вы закончили свою первую версию опенсорс проекта на Питоне, выложили её на Гитхаб, и даже написали честный ридми: «Требуется Python 3.10, поставьте зависимости через pip install -r requirements.txt «.
И. через какое‑то время вам звонит
пользовательдруг с вопросом: «Слушай, интересный проект, а как его под Windows поставить?»Собственно, с этого момента у вас есть 3 варианта:
- Попытаться сэкономить всем время и попробовать упаковать ваш проект в EXE‑файл через утилиты типа pyinstaller или Auto PY to EXE. Минус: при сколь‑нибудь сложных зависимостях нужно будет ковыряться довольно долго, чтобы заставить EXE заработать. Второй минус: как вы думаете, на кого ляжет почетная обязанность собирать EXE‑шники после каждого апдейта кода?
- Попытаться объяснить другу, что такое python, GIT и как всё это поставить. Минус: возможны проблемы в отношениях с другом:))) (Вариант: поставить всё самому через дистанционный доступ, но он требует слишком много времени если
пользователейдрузей больше 5) - Дописать под себя набор BAT‑файлов, о которых пойдет речь в статье, и которые:
- ставят сами Python и GIT в локальную папку проекта (в стиле conda);
- выкачивают свежую версию с Гитхаба (а также апдейтят её при необходимости);
- ставят нужные зависимости;
- можно прописать несколько сценариев запуска приложения;
- установленный проект можно перемещать в другие папки и между компами.
Как я эти батники нашел
Есть такой интересный опенсорс проект, который позволяет запускать текстовые нейросети на локальном компьютере с веб‑интерфейсом: https://github.com/oobabooga/text‑generation‑webui
Проекты с нейросетями, как правило, это проекты с очень большим числом нетривиальных зависимостей. Например:
- Вам нужно знать, нужно ли ставить версию torch с GPU ускорением от NVIDIA, или же надо ставить CPU‑версию.
- Часто нужно скачивать какие‑то кастомные дополнительные Github‑проекты библиотеки.
- Надо ставить нетривиальные версии библиотек (проект выше, например, использует кастомную сборку bitsandbytes под Windows, которая позволяет запускать 4-битные нейросети, требующие меньше памяти)
И я был сильно удивлен, когда нашел проект от того же пользователя под названием one‑click‑installers, который решал все эти проблемы установки буквально в несколько BAT‑файлов.
Собственно, я его установил (все заработало с первого раза), разобрался в BAT‑файлах, и они меня так впечатлили своей компактностью, что я даже достаточно быстро сделал подобный компактный инсталлятор для своего голосового помощника Ирины.
Как это работает и как это настроить
В качестве базового проекта рекомендую взять мой инсталлятор, а за нетривиальными случаями обращаться к оригинальному one‑click‑installer.
Итак, есть два основных файла:
- Скачивает проект micromamba (компактная замена conda). (Вначале выводится предупреждение — путь не должен содержать пробелов и нелатинских букв/цифр.)
- Устанавливает указанные пакеты (в частности, я указываю python3.10 и git; в моем BAT‑файле есть еще выбор, установить ли тяжелый torch для Silero TTS, но вы можете этот выбор убрать) в installer_files.
- Активирует окружение
- Если репозитория вашего проекта ещё не существует — клонирует его с Гитхаба; если уже существует — пытается обновить с помощью git pull.
- Устанавливает или обновляет зависимости через call python -m pip install -r requirements.txt —upgrade . (У меня используются кастомные зависимости в call python ‑m pip install ‑r requirements_exe_runner.txt ‑upgrade, так что не забудьте поправить для своего проекта)
Собственно, после install в идеале наш проект полностью готов к работе.
run предельно простой:
- Он инициализирует окружение с нужными зависимостями
- Запускает нужный питон‑файл через call python run.py (или что вы там укажете)
Также в проекте существует micromamba‑cmd.bat, который позволяет в интерактивном режиме зайти в текущее окружение и что‑то там подправить (например, поставить новые зависимости ручками если сильно нужно).
Переносимость
Установка переносимая; но после переноса в другое место будет выдавать ошибку «Micromamba not found» — потому что сформированные BAT‑файлы Micromamba содержат абсолютные пути.
Для решения проблемы после переноса нужно удалить все BAT‑файлы из installer_files\mamba\condabin и запустить run.bat — BAT‑файлы будут перегенерированы.
Выводы
install.bat выполняет основную часть установки, ставя зависимости через Интернет, позволяет быстро обновлять проект до последней Git‑версии, и занимает всего 90 строк кода.
Вот я с ним поработал и могу сказать — поправить его под свой проект занимает где‑то полчаса‑час (ну, вместе с тестированием мелочей, конечно).