Разработка программного обеспечения на Python, которое будет работать в другой среде.

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

Однако я в основном разрабатываю программное обеспечение на своем персональном компьютере, и здесь у меня нет прямого доступа к командам, которые будет вызывать мой графический интерфейс, поскольку графический интерфейс будет использовать subprocess для вызова команд, которые доступны только на вычислительном кластере.

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

Это просто кажется плохим способом, но я должен иметь возможность тестировать свое программное обеспечение в среде, для которой оно создано, чтобы найти свои ошибки.

Конечно, это распространенная проблема в разработке программного обеспечения... Чем занимаются настоящие программисты (в отличие от программистов-любителей, таких как я)?

Редактировать: примеры команд, которые доступны только в вычислительном кластере, которые я активно использую, — это squeue, sacct и scontrol (команды, связанные с SLURM).

Edit2: я мог бы упомянуть, что я тестировал использование ssh-соединений с Python, но это значительно замедлило работу команд, поскольку мне приходилось устанавливать ssh-соединение для каждой команды, которую я хотел. Если бы я не мог установить продолжительный сеанс ssh, как при входе в систему при открытии моей программы, я не думаю, что ssh-ing будет работать.


person Yoda    schedule 01.06.2019    source источник
comment
что вы хотите сделать кроссплатформенным, например, создавать каталоги или получать домашнее местоположение пользователя и т. д.?   -  person tbhaxor    schedule 01.06.2019
comment
Специальные команды Slurm, такие как squeue, sacct или scontrol, доступны только в кластере.   -  person Yoda    schedule 01.06.2019
comment
На первый взгляд я бы сказал: используйте Git. С центральным репозиторием, доступным как с вашей рабочей станции, так и с кластера, вам не придется копировать, а нужно клонировать/извлекать/проталкивать. И вы получите пользу от управления версиями кода, что действительно необходимо при разработке программного обеспечения. Еще одна вещь, которую вы можете сделать, — это использовать виртуальную среду, снова доступную как с вашей рабочей станции, так и с кластера. Я делаю это с помощью conda, который позволяет тестировать с использованием одного и того же Python и основных зависимостей, где бы я ни активировал среду, но извлекать выгоду из определенного локального контекста на некоторых машинах (например, HPC).   -  person FabienP    schedule 01.06.2019
comment
это скорее похоже на использование для Vagrant   -  person Sascha Gottfried    schedule 06.06.2019
comment
Мы используем git для синхронизации наших репозиториев в Slurm. Рабочий процесс выглядит примерно так: код на локальной машине; толкать; получить доступ к удаленному кластеру по SSH; тянуть обновления; запустите sbatch со скриптом, подготовив среду, обновив conda и запустив скрипт.   -  person Yamaneko    schedule 10.06.2019


Ответы (1)


Изучите концепции, которые делают Vagrant популярным выбором для разработчиков

Vagrant — это инструмент для создания сред виртуальных машин и управления ими в рамках единого рабочего процесса. Благодаря простому в использовании рабочему процессу и акценту на автоматизации Vagrant сокращает время настройки среды разработки, повышает производительность и делает оправдание «работает на моей машине» пережитком прошлого.

Ваш вариант использования покрыт парой бродячих ящиков, которые создают кластер slurm для целей разработки. Хорошей отправной точкой может быть

Если вы понимаете и можете настроить свою среду разработки с помощью таких инструментов, как Vagrant, вы можете изучить следующие варианты, которые предлагают современные редакторы кода или интегрированные среды разработки (IDE) для удаленной разработки. Удаленная разработка охватывает некоторые другие варианты использования, которые также могут вписаться в ваш набор инструментов разработчика.

«Достаточно хорошим», бесплатным и открытым редактором исходного кода для разработки на Python является Visual Studio Code. Согласно документам, он имеет мощные функции для удаленной разработки.

Visual Studio Code Remote Development позволяет использовать контейнер, удаленный компьютер или подсистему Windows для Linux (WSL) в качестве полнофункциональной среды разработки.

Читать документы

person Sascha Gottfried    schedule 06.06.2019