Wie am besten Programme unter Linux starten

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.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Da ich morgen oder übermorgen mit meinen Programm "Pyedit" soweit bin brauche ich noch eine vernünftige lösung das Programm zu starten.

Wie startet ihr eure Python Programme?
sicher nicht mit cd python datei.py
oder ./datei.py

ich brauche einen weg das die Konsole mit aufgeht, deswegen könnte man doch etwas machen was die Konsole dazu bringt das Programm zu startet.

Uner windows kann man das ja mit ".cmd" dateien machen glaub ich.

Das Programm über c auszuführen habe ich schon versucht, nur ging dann fast nichts mehr. Ich habe das so gemacht:

Code: Alles auswählen

void main(void):
{
  system("python pyedit.pyw");
}
Diese Lösung finde ich prersönlich nicht sehr gut (gut kann auch davon kommen das es nicht funktioniert)

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Andyh hat geschrieben:Wie startet ihr eure Python Programme?
sicher nicht mit cd python datei.py
oder ./datei.py
Wieso, was spricht dagegen? Man kann natürlich auch noch eine symbolische Verknüpfung anlegen, dann kann man es z.B. mit Alt+F2 ausführen. Weiter kann man Programme über die Menüleiste, den Kicker, Panel oder Desktop starten.


gkuhl
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Danke für die schnelle antwort!

es spicht nichts gegen ./pyedit.pyw, aber möchte ich gerne das es eine Datei wie unter windows gibt die man mit der man über einen doppelklick das python programm starten kann.

Ich weis nicht wie ich eine solche "verknüpfung" oder c-script" machen kann.

Achso der C-Script

Code: Alles auswählen

void main(void):
{
  system("python pyedit.pyw");
}
funktioniert schon, aber nur wenn ich ihn in der console ausführe, komisch?

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Wenn du ein "C-Skript" schreibst, stehst du doch vor genau den selbem Problem. Wie startet man am besten ein C-Skript unter Linux. Die Antwort: Man legt eine Verknüpung an. Das ist unter Windows meines Wissens auch nicht anders, wo man ja auch Desktopverknüpfungen hat.

Unter Gnome heißen die Dinger übrigens "Starter". Mit rechtsklick auf den Desktop "Starter anlegen". Ähnliches geht im Panel oder für das Hauptmenü. Bei KDE sieht das ziemlich ähnlich aus.

Um symbolische Links anzulegen hilft vielleicht dieser Wikieintrag: http://wiki.ubuntuusers.de/ln


Grüße
gkuhl
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Gut ich bin vieleicht eine niete im erklären.

Was passiert wenn:

Ich auf eine .py/.pyw klicke -> Editor startet zum bearbeiten

Ich auf eine Copiliertes c_script klicke -> Programm startet

oder ist das bei euch anders?

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Andyh hat geschrieben:oder ist das bei euch anders?
Ja. Bei mir sind die Python-Datei-Endungen mit python bzw. pythonw verknüpft. Deshalb starten bei einem Doppelklick die Dateien direkt. Das dürfte bei der Python-Installation unter Windows auch der Standard sein.
MfG
HWK
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Danke für deine Antwort HWK!

Das bringt schonmal licht ins duckel.
Also starten Python-Programme unter linux nicht automatisch ganeu wie bei mir.

Nur brauche ich jetzt einen weg der mit Doppelklick geht und ohne was am system herumzustellen.

Wenn man eine software bekommt möchte mann ja auch nicht erst mal hier ne Verknüpfung machen und da was einstellen.

gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Das macht unter Linux der sogenannte Shebang, die erste Zeile im Script, z.B.:

Code: Alles auswählen

#!/usr/bin/python
Sie gibt das Programm an, mit dem das Script ausgeführt werden soll.
MfG
HWK
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Wie du vielleicht schon festgestellt hast, ist Linux nicht gleich Linux. Jedes System ist ein wenig anders konfiguriert. Der Standard-Weg, der bei vernünftig definierter Shebang fast überall funktionieren sollte, ist nun einmal ./programm.py

Wenn ich eine Python-Datei mit Shebang und Ausführrechten versehe, wird sie bei Doppelklick übrigens gestartet. Fehlen die Ausführrechte, wird sie im Editor geöffnet. Vielleicht solltest du da mal n Blick drauf werfen.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Andyh hat geschrieben:Gut ich bin vieleicht eine niete im erklären.
Es liegt wohl eher daran, das ich heute mal ziemlich schlecht erkläre. :wink:

Es gibt zwei Arten Skripte zu öffnen. Erstens zum Editieren in einem Texteditor oder zweitens zum Ausführen. Was davon passiert, wenn du auf eine Datei klickst, hängt von deinen Einstellungen ab. Es gibt auch die Einstellung, dass du auswählen kannst was passiert. Da eine kompilierte C-Datei eine Binärdatei ist, fällt die Bearbeitung im Texteditor weg. Das ist der Grund, warum diese Dateien dann immer ausgeführt werden.

Wenn man ein Programm einfach über den Terminal starten möchte, kann man eine Verlinkung erstellen. Firefox kann man z.B. einfach durch das Eintippen von "firefox" öffnen. Das ist eine Verknüpfung auf ein Shell-Skript, dass Firefox ausführt.
Für den Desktop, den Panel oder auch das Menü gibt es (unter Gnome) die Möglichkeit "Starter" anzulegen. Hier kannst du ebenfalls auswählen, wie du das Programm starten möchtest. Es gibt übrigens auch die Möglichkeit "im Terminal ausführen".

gkuhl
BlackJack

Einfach die Python-Datei mit ``chmod`` ausführbar machen. Bei einigen Benutzern wird die dann bei Doppelklick ausgeführt, bei anderen öffnet sich ein Editor mit der Datei, und bei wieder anderen geht ein Fenster auf, welches nachfragt was davon getan werden soll. Das geht *Dich* aber alles nichts an, weil das wirklich in der Verantwortung der Benutzer liegt, was die gerne hätten, was bei einem Doppelklick passiert.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Danke ihr zwei, nur das habe ich schon alles durch.

Ich glaube ich werde falsch verstanden.

Wenn ich das für micht ausführe ist das ja alles in ordnung.

Ich will das Programm aber verteilen und deswegen muss die lösnung nach der ich suche einfach so funktionieren ohne rechte setzten ohne was ins terminal zu schreiben, wobei aber sich ein Terminal öffnen soll.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
BlackJack

Du könntest Dich mit Desktop Entry-Dateien befassen und wie man die mit den ``xdg-*``-Werkzeugen installiert. Dann könntest zumindest einen einfachen Installer für Desktop-Umgebungen schreiben, die diesen Standard unterstützen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ja, am besten du baust Distributuions-Pakete die automatisch Verknüpfungen anlegen. Persönlich starte ich aber Programme sehr oft einfach über die Konsole oder Alt-F2; einige Leute schwören auch auf "GNOME Do".
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ich denke Desktop Entry ist genau das richtige!
besten dank.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
abgdf

Ich will das Programm aber verteilen und deswegen muss die lösnung nach der ich suche einfach so funktionieren ohne rechte setzten ohne was ins terminal zu schreiben, wobei aber sich ein Terminal öffnen soll.
Die Sache mit

Code: Alles auswählen

./skript.py
ist unter Linux den Benutzern bekannt. Wäre also ok so.

Wenn Du die Datei mit korrekten Rechten packst (etwa in ein .tar.gz), kommt sie beim Benutzer auch so (also auch schon ausführbar) an.

Es gibt da also eigentlich keine Probleme ...

Gruß
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Also das finde ich die beste Lösung:

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Pyedit
GenericName=Pyedit
Comment=Pyedit
Exec=python /home/andy/py/pyedit/pyedit.pyw
Terminal=true
Type=Application
StartupNotify=true

den pafd bei Exec lasse ich von meinen installscript erstellen, somit währe die sache ja gut und unter windows lasse ich nur eine verknüpung erstellen.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Funktioniert das unter allen DEs? Nicht unsonst gibt es XDG-utils.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Ich würde da keinen absoluten Pfad verwenden entweder python -m pyedit.pyedit oder einfach 'pyedit' mit einem shebang versehen und ab nach $PATH
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Leider kann ich das nicht testen, aber ich hoffe mal.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Antworten