web-dev-qa-db-fra.com

Exécutez Spyder / Python sur un serveur distant

Il y a donc des variantes de cette question - mais aucune n'a vraiment frappé le clou sur la tête.

Je veux exécuter spyder et faire une analyse interactive sur un serveur. J'ai 2 serveurs, ni Spyder. Ils ont tous les deux python (serveur linux) mais je n'ai pas les droits Sudo pour installer les packages dont j'ai besoin.

En bref, le cas d'utilisation est: open spyder sur la machine locale. FAITES quelque chose (besoin d'aide ici) pour utiliser la puissance de calcul des serveurs, puis renvoyez les résultats à la machine locale.

Mettre à jour:

J'ai mis à jour pythonn avec mes packages sur un serveur. Maintenant, pour comprendre le nom du noyau et le lien vers Spyder. Laisser la version précédente de la question, car cela est toujours utile.

Le processus de docker est un peu intimidant, tout comme le paramiko. Quelles sont mes options?

10
pythOnometrist

( Mainteneur Spyder ici ) Ce que vous devez faire est de créer un noyau Spyder sur votre serveur distant et de vous y connecter via SSH. C'est la seule installation que nous fournissons pour faire ce que vous voulez.

Vous pouvez trouver les instructions précises pour le faire dans nos documents .

9
Carlos Cordoba

J'ai fait une longue recherche de quelque chose comme ça dans mon travail précédent, lorsque nous voulions rapidement itérer sur le code qui devait traverser de nombreux travailleurs dans un cluster. Tous les projets de file d'attente de tâches commerciaux et open source que j'ai trouvés étaient basés sur l'exécution de code fixe avec des entrées arbitraires, plutôt que sur l'exécution de code arbitraire.

Je serais également intéressé de voir s'il y a quelque chose que j'ai manqué. Mais dans mon cas, j'ai fini par construire ma propre solution (malheureusement pas open source).

Ma solution était:

1) J'ai créé une file d'attente Redis où chaque tâche consistait en un fichier Zip avec un script de configuration bash (pour les installations pip, etc.), une "charge utile" Python à exécuter et un fichier pickle avec des données d'entrée.

2) Le "payload" Python lirait le fichier pickle ou d'autres fichiers contenus dans le fichier Zip. Il produirait un fichier nommé output.Zip.

3) Le travailleur de tâche était un script Python (exécuté sur la machine distante, écoutant la file d'attente Redis) qui décompressait le fichier, exécutait le script d'installation bash, puis exécutait le Python. Lorsque le script se terminait, le travailleur téléchargeait output.Zip.

Il y a eu diverses optimisations, comme si le travailleur n'exécutait pas le même script de configuration bash deux fois de suite (il se souvenait du hachage SHA1 du script de configuration le plus récent). Donc, de toute façon, dans le pire des cas, vous pourriez le faire. C'était une semaine ou deux de travail à mettre en place.

Modifier:

Une deuxième option (beaucoup plus manuelle), si vous avez juste besoin de fonctionner sur une machine distante, consiste à utiliser sshfs pour monter localement le système de fichiers distant, afin que vous puissiez modifier rapidement les fichiers dans Spyder. Ensuite, gardez une fenêtre ssh ouverte sur la machine distante et exécutez Python à partir de la ligne de commande pour tester les scripts sur cette machine. (C'est ma configuration standard pour développer des programmes Raspberry Pi.)

0
Luke