IDE mit SSH Unterstützung gesucht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
unique24
User
Beiträge: 69
Registriert: Donnerstag 5. Juli 2018, 14:51

Hallo,

gibt es eine kostenlose Python IDE, wo man das Programm über SSH auf einem Linux ausführen lassen kann?

Die IDE wäre auf dem Windows PC und das Programm aber auf einem Linux Rechner

pyCharm kann das wohl, aber nicht die kostenlose Version

Danke!
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wäre eine SMB-Freigabe auf dem Linuxrechner eine Option? Dann ist es egal welchen Editor oder welche IDE Du verwendest.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@__blackjack__: Meinst du eine SMB-Freigabe auf dem Linuxrechner reicht? Er möchte ja auf dem Windows-Rechner das Programm schreiben, aber auf dem Linux-Rechner ausführen - aus der IDE heraus.
unique24
User
Beiträge: 69
Registriert: Donnerstag 5. Juli 2018, 14:51

Hallo,

ja, es soll auf dem Linux ausgeführt, da nur dort alle imports zur Verfügung stehen. Jedesmal ein Share einrichten ich nichts so optimal
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mit Emacs und dem Tramp Modus kann man einfach via SSH auf einem anderen Rechner die Quelldateien editieren.
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Eine IDE, die so etwas kann, kenne ich nicht und von Windows habe ich keine Ahnung. Ganz grundsätzlich kann man sich so eine Automatisierung doch relativ leicht selbst bauen (z. B. "zu Fuß" über ssh und Shell-Scripte, über so etwas wie http://www.fabfile.org/fabric, vielleicht über githooks, oder diverse andere Wege mehr) und die meisten IDEs dürften Features anbieten, um benutzerdefinierte Kommandos zu registrieren.
Zuletzt geändert von nezzcarth am Donnerstag 26. November 2020, 19:25, insgesamt 1-mal geändert.
unique24
User
Beiträge: 69
Registriert: Donnerstag 5. Juli 2018, 14:51

Ja, ich mach es aktuell mit Notepad++ ... aber eine IDE die mir den Code prüft wäre feiner :-)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Emacs hat zb auch elpy was verschiedene linter anwirft, Importe checkt, etc.

Allerdings gibt es prinzipbedingte Grenzen bei deinem Anwendungsfall: GPIO Pakete et al funktionieren natürlich nicht, genauso wenig in pycharm.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

heyJo
User
Beiträge: 25
Registriert: Mittwoch 24. Januar 2018, 20:49
Wohnort: Köln

Wenn es keine ausgewachsene IDE sein muss klappt das ganz gut mit einem Jupyther notebook

Running a notebook server — Jupyter Notebook 6.1.5 documentation

https://jupyter-notebook.readthedocs.io ... erver.html
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Hier mal ein Proof of Concept mit fabric für beliebige IDEs (getestet mit geany als benutzerdefiniertes Build-Kommando):

(Müsste man natürlich noch ein bisschen robuster programmieren und verbessern; mehr als eine Datei, virtualenv anlegen, etc. …)

Code: Alles auswählen

#!/usr/bin/env python3
import argparse
import pathlib
import fabric


HOST = '<mein host>'


def get_cli_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('script', help='Python script')
    return parser.parse_args()


def main():
    args = get_cli_args()
    connection = fabric.Connection(HOST)
    connection.run('uname -a')
    result = connection.run('mktemp -d')
    if result.ok:
        remote_path = pathlib.Path(result.stdout.rstrip())
    with connection.cd(str(remote_path)):
        connection.put(args.script, str(remote_path))
        cmd = 'python3 "{}"'.format(str(remote_path / args.script))
        print('-' * 79)
        connection.run(cmd)
        print('-' * 79)
    cmd = 'rm -rfv "{}"'.format(remote_path)
    connection.run(cmd)


if __name__ == '__main__':
    main()

Code: Alles auswählen

$ ./remote_run.py helloworld.py 
FreeBSD freebsd 12.2-STABLE FreeBSD 12.2-STABLE GENERIC  amd64
/tmp/tmp.Jqn6c72h
-------------------------------------------------------------------------------
Hello world!
-------------------------------------------------------------------------------
/tmp/tmp.Jqn6c72h/helloworld.py
/tmp/tmp.Jqn6c72h
Antworten