Ergebnis 1 bis 5 von 5

Funktionieren unter Windows erstellte Python-Dateien unter macOS?

  1. #1 Zitieren
    Drachentöter Avatar von Lord-Hagen
    Registriert seit
    Apr 2009
    Beiträge
    4.523
    Hallo zusammen,

    ich verwende seit kurzem parallel zu meinem Windows-Hauptrechner ein MacBook mit dem Betriebssystem macOS Sierra und wollte dort ein unter Windows erstelltes Python-Script in dem auch unter macOS verfügbaren IDLE öffnen.

    Dabei habe ich dann aber festgestellt, dass irgendwie nur ein Teil der Datei eingelesen wird und an mehreren Stellen mehrere Zeilen der Datei fehlen. Wenn ich die Datei allerdings - ebenfalls in macOS - in einem reinen Texteditor öffne, wird mir diese wie unter Windows vollständig angezeigt.

    Der einzige Unterschied neben dem anderen Betriebssystem im Vergleich zur Windows-Installation ist, dass ich Python auf meinem Windows-PC in der Version 2.7.2 installiert habe, unter macOS Sierra jedoch in der Version 2.7.9, da sich noch ältere Versionen dort nicht mehr installieren ließen.

    Meine Frage ist nun, ob jemand zufälligerweise Erfahrung mit in Windows geschriebenen Python-Scripts unter macOS hat? Funktionieren diese dort? Muss man dazu - abgesehen von den für das Programm benötigten Packages - noch etwas anderes installieren? Oder liegt das Problem eher daran, dass die IDLE-Versionen von Windows und macOS untereinander nicht kompatibel sind?
    Lord-Hagen ist offline

  2. #2 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.220
    Was genau bei dir das Problem ist, kann ich dir so natürlich nicht sagen. ABer ich kann ja mal ein paar Fallstricke auflisten, die mir spontan einfallen:

    • Zeilenumbruch: Python zieht viel seiner Logik aus Zeilenumbrüchen und Einrückungen. Nun verwenden Windows und Unix (macOS ist ein Unixoides Betriebssystem) aber andere Zeichen für den Zeilenumbruch. Daher kann es sein, dass der Zeilenumbruch unter Windows auf macOS nicht erkannt wird und er deshalb alles in eine Zeile klatscht ... und anders rum. Anpassen kann man das mit Tools wie tofrodos, oder mit anständigen Text-Editoren. Manche Text-Editoren machen das evtl auch "on the fly" und zeigen es einfach direkt richtig an. Wichtig wäre aber auch, das ganze im richtigen Format zu speichern, sonst verschluckt sich der Interpreter evtl und man fragt sich warum.
    • Python-Version: Nein, ich meine nicht den Unterschied zwischen Python 2.7.2 und 2.7.9 sondern eher den zwischen 2.7.2 und 3.5, oder was macOS sonst noch mit liefert. Jedenfalls würde es mich arg wundern, wenn Apple da kein Python3 mit ausliefert. Python 2 und 3 sind dann nämlich tatsächlich inkompatibel zueinander (nunja, zumindest Teilweise). Ja, du hast wohl auch 2.7.9 nachinstalliert. Aber nutzt deine IDE das auch? Oder arbeitet die einfach mit der höchsten Python-Version die sie finden kann?
    • Unterschiedliche Versionen der IDE. Nur weil ein Programm auf zwei Plattformen verfügbar ist, muss nicht auch das selbe Programm dahinter stecken. Evtl ist das IDLE auf macOS ein anderes als unter Windows, oder generell eine andere Version?
    • Vergessene Abhängigkeiten: Viele IDEs arbeiten mit sowas wie Plugins und lassen sich erweitern und anpassen. Dabei sind dann nicht alle Komponenten immer notwendig und somit auch nicht immer vorhanden. Vielleicht hast du da eine Komponente vergessen zu installieren?
    • Falsch programmiert: Prinzipiell ist Python recht plattformunabhängig. Das heißt natürlich nicht, dass man damit nicht so programmieren kann, dass es nur auf einer Plattform funktioniert. Wer z.B. fest einprogrammiert, dass der Pfad-Trenner ein Backslash ist, der kann das Programm unter Windows super verwenden, wird aber bei allen unixoiden Systemen böse auf die Nase fallen.


    Und letztlich: Warum die IDE? Arbeitest du noch an dem Script? Oder willst du es einfach nur benutzen? Für letzteres brauchst du ja die IDE nicht.
    Lookbehind ist offline

  3. #3 Zitieren
    Drachentöter Avatar von Lord-Hagen
    Registriert seit
    Apr 2009
    Beiträge
    4.523
    Erst einmal Danke für die möglichen Denkansätze.

    Zitat Zitat von Lookbehind Beitrag anzeigen
    Was genau bei dir das Problem ist, kann ich dir so natürlich nicht sagen. ABer ich kann ja mal ein paar Fallstricke auflisten, die mir spontan einfallen:

    Zeilenumbruch: Python zieht viel seiner Logik aus Zeilenumbrüchen und Einrückungen. Nun verwenden Windows und Unix (macOS ist ein Unixoides Betriebssystem) aber andere Zeichen für den Zeilenumbruch. Daher kann es sein, dass der Zeilenumbruch unter Windows auf macOS nicht erkannt wird und er deshalb alles in eine Zeile klatscht ... und anders rum. Anpassen kann man das mit Tools wie tofrodos, oder mit anständigen Text-Editoren. Manche Text-Editoren machen das evtl auch "on the fly" und zeigen es einfach direkt richtig an. Wichtig wäre aber auch, das ganze im richtigen Format zu speichern, sonst verschluckt sich der Interpreter evtl und man fragt sich warum.
    Das ist tatsächlich eines der möglichen Probleme, über das ich auch schon nachgedacht habe. Andererseits müssten die fehlenden Zeilen dann aber meiner Meinung nach zumindest irgendwo auftauchen, nicht aber gar nicht sichtbar sein, oder?
    [*]Python-Version: Nein, ich meine nicht den Unterschied zwischen Python 2.7.2 und 2.7.9 sondern eher den zwischen 2.7.2 und 3.5, oder was macOS sonst noch mit liefert. Jedenfalls würde es mich arg wundern, wenn Apple da kein Python3 mit ausliefert. Python 2 und 3 sind dann nämlich tatsächlich inkompatibel zueinander (nunja, zumindest Teilweise). Ja, du hast wohl auch 2.7.9 nachinstalliert. Aber nutzt deine IDE das auch? Oder arbeitet die einfach mit der höchsten Python-Version die sie finden kann?
    Die IDLE arbeitet ebenfalls in der Version 2.7.9. Soweit ich weiß hat selbst das in macOS ab Werk installierte Python die Versionsnummer 2.7.x.
    [*]Unterschiedliche Versionen der IDE. Nur weil ein Programm auf zwei Plattformen verfügbar ist, muss nicht auch das selbe Programm dahinter stecken. Evtl ist das IDLE auf macOS ein anderes als unter Windows, oder generell eine andere Version?
    Es sind beides die mit der jeweiligen Python-Installation mitgelieferten Versionen der IDLE. Inwiefern diese sich selbst unterscheiden, dürfte leider schwierig herauszufinden sein, aber es wäre natürlich ein möglicher Grund.
    [*]Vergessene Abhängigkeiten: Viele IDEs arbeiten mit sowas wie Plugins und lassen sich erweitern und anpassen. Dabei sind dann nicht alle Komponenten immer notwendig und somit auch nicht immer vorhanden. Vielleicht hast du da eine Komponente vergessen zu installieren?
    Neben den Packages, die das jeweilige Programm benötigt, wird in der ReadMe der IDLE tatsächlich angegeben, dass es wohl ohne Installation einer aktuellen Version von Tcl/Tk zu erheblichen Schwierigkeiten mit der IDLE unter macOS kommen kann (https://www.python.org/download/mac/tcltk/). Ich habe das zwar gemacht, es kann aber gut sein, dass die Probleme aus dieser Richtung kommen.
    [*]Falsch programmiert: Prinzipiell ist Python recht plattformunabhängig. Das heißt natürlich nicht, dass man damit nicht so programmieren kann, dass es nur auf einer Plattform funktioniert. Wer z.B. fest einprogrammiert, dass der Pfad-Trenner ein Backslash ist, der kann das Programm unter Windows super verwenden, wird aber bei allen unixoiden Systemen böse auf die Nase fallen.
    Das glaube ich fast weniger, da die Skripte letztlich nur relativ simple, höchstwahrscheinlich plattformunabhängige Strukturen verwenden.
    Und letztlich: Warum die IDE? Arbeitest du noch an dem Script? Oder willst du es einfach nur benutzen? Für letzteres brauchst du ja die IDE nicht.
    Ich will tatsächlich noch an dem Skript arbeiten. Das kann ich zwar nach wie vor gut über den Windows-PC erledigen, aber unterwegs bietet sich die mobile Variante mit dem MacBook an.

    Interessant ist auch, dass ich über Google bislang keine Probleme in dieser Richtung gefunden habe. Entweder ist das Vorgehen, an Python-Skripten, die unter Windows erstellt wurden, auf dem Mac weiterzuarbeiten, an für sich untypisch oder aber es ist ein sehr spezielles Problem. Es tritt allerdings leider bisher mit allen meinen unter Windows erstellten Python-Skripts auf.
    Lord-Hagen ist offline

  4. #4 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.220
    Zitat Zitat von Lord-Hagen Beitrag anzeigen
    ...
    Andererseits müssten die fehlenden Zeilen dann aber meiner Meinung nach zumindest irgendwo auftauchen, nicht aber gar nicht sichtbar sein, oder?
    Jain. Du verwendest ja keinen Text-Editor, sondern eine voll ausgewachsene IDE, welche dir möglichst viele Aufgaben abnehmen möchte. Das führt manchmal dazu, dass die IDE dir Aufgaben Abnimmt, die du überhaupt nicht erledigt haben möchtest.
    (Aus dem Grund mag ich auch Eclipse, NetBeans und Co nicht.)
    Zitat Zitat von Lord-Hagen Beitrag anzeigen
    Die IDLE arbeitet ebenfalls in der Version 2.7.9. Soweit ich weiß hat selbst das in macOS ab Werk installierte Python die Versionsnummer 2.7.x.
    Es ist durchaus üblich, Python 2 und 3 parallel installiert zu haben.

    Beispiel Mein Desktop-Rechner:
    Code:
    $ ls /usr/bin/python*
    /usr/bin/python     /usr/bin/python3      /usr/bin/python3.5m
    /usr/bin/python2    /usr/bin/python3.2    /usr/bin/python3m
    /usr/bin/python2.6  /usr/bin/python3.2mu  /usr/bin/pythontex
    /usr/bin/python2.7  /usr/bin/python3.5    /usr/bin/pythontex3
    2.6 und 3.2 kann ich eigentlich mal raus schmeißen.
    Zitat Zitat von Lord-Hagen Beitrag anzeigen
    Es sind beides die mit der jeweiligen Python-Installation mitgelieferten Versionen der IDLE. Inwiefern diese sich selbst unterscheiden, dürfte leider schwierig herauszufinden sein, aber es wäre natürlich ein möglicher Grund.
    Python installiert nicht IDLE mit. Wenn überhaupt, dann installiert IDLE Python mit.
    Welche Version von IDLE du verwendest sollte sich raus finden lassen. Entweder gibt es ein "About" Menü, oder du versuchst es einfach mal mit idle --version.
    Es gibt übrigens auch eine, auf Python3 angepasste Version von IDLE.
    Zitat Zitat von Lord-Hagen Beitrag anzeigen
    ...
    Das glaube ich fast weniger, da die Skripte letztlich nur relativ simple, höchstwahrscheinlich plattformunabhängige Strukturen verwenden.
    War ja auch bloß ne Vermutung. Es lässt sich ja auch sauber plattformübergreifend programmieren. Gibt ja genug Beispiele, die das belegen.
    Zitat Zitat von Lord-Hagen Beitrag anzeigen
    Ich will tatsächlich noch an dem Skript arbeiten. Das kann ich zwar nach wie vor gut über den Windows-PC erledigen, aber unterwegs bietet sich die mobile Variante mit dem MacBook an.
    Kann ich verstehen. Ich will es auch nicht missen, am Laptop weiter arbeiten zu können.
    Zitat Zitat von Lord-Hagen Beitrag anzeigen
    Interessant ist auch, dass ich über Google bislang keine Probleme in dieser Richtung gefunden habe. Entweder ist das Vorgehen, an Python-Skripten, die unter Windows erstellt wurden, auf dem Mac weiterzuarbeiten, an für sich untypisch oder aber es ist ein sehr spezielles Problem. Es tritt allerdings leider bisher mit allen meinen unter Windows erstellten Python-Skripts auf.
    ... oder es benutzt einfach keiner IDLE ... *hust* Erwähnte ich schon, dass ich IDEs nicht mag.
    Lookbehind ist offline

  5. #5 Zitieren
    Drachentöter Avatar von Lord-Hagen
    Registriert seit
    Apr 2009
    Beiträge
    4.523
    Zitat Zitat von Lookbehind Beitrag anzeigen
    [...]
    Es ist durchaus üblich, Python 2 und 3 parallel installiert zu haben.

    Beispiel Mein Desktop-Rechner:
    Code:
    $ ls /usr/bin/python*
    /usr/bin/python     /usr/bin/python3      /usr/bin/python3.5m
    /usr/bin/python2    /usr/bin/python3.2    /usr/bin/python3m
    /usr/bin/python2.6  /usr/bin/python3.2mu  /usr/bin/pythontex
    /usr/bin/python2.7  /usr/bin/python3.5    /usr/bin/pythontex3
    2.6 und 3.2 kann ich eigentlich mal raus schmeißen.
    Ich habe jetzt auch noch einmal nachgeschaut. Mein Output sieht wie folgt aus:
    Code:
    ls /usr/bin/python*
    /usr/bin/python			/usr/bin/python2.6-config	/usr/bin/pythonw
    /usr/bin/python-config		/usr/bin/python2.7		/usr/bin/pythonw2.6
    /usr/bin/python2.6		/usr/bin/python2.7-config	/usr/bin/pythonw2.7
    Es ist also wohl wirklich nur Python 2.7 (sowie 2.6) installiert. Die 2.6 kam wohl ab Werk mit.

    Python installiert nicht IDLE mit. Wenn überhaupt, dann installiert IDLE Python mit.
    Welche Version von IDLE du verwendest sollte sich raus finden lassen. Entweder gibt es ein "About" Menü, oder du versuchst es einfach mal mit idle --version.
    Es gibt übrigens auch eine, auf Python3 angepasste Version von IDLE.
    Als direkt in Python integrierte Entwicklungsumgebung wird die IDLE im Normalfall direkt bei der Installation einer Python-Version mitinstalliert.
    Im 'About' Menü wird mir auch angezeigt, dass die IDLE mit Python-Version 2.7.9 und Tk-Version 8.5.18 arbeitet und demnach wie von Python gefordert.
    Also an einem Konflikt zwischen Python 2 und dem nicht vorhandenen Python 3 kann der Fehler demnach nicht liegen. Bleibt nur noch die Frage, ob die IDLE-Versionen von Windows und Mac kompatibel sind.

    ... oder es benutzt einfach keiner IDLE ... *hust* Erwähnte ich schon, dass ich IDEs nicht mag.
    Da die Dateien bspw. in Apple Xcode bis auf einzelne Character-Fehler, die aber selbstverschuldet (Stichwort Umlaute in deutschen Kommentaren) sind, problemlos eingelesen werden könne, dürfte das wohl die einfachste Lösung des Problems sein.
    Da ich in Python allerdings bisher immer in der IDLE gearbeitet habe, wäre es halt schön, rein aus Gewohnheit weiter damit arbeiten zu können.



    Edit (28.12.2016):

    Ich habe das Problem jetzt gelöst. Tatsächlich lag der Grund, warum die Dateien nicht in die IDLE eingelesen werden konnte, in einer Unsauberkeit in meinen Kommentaren, die ich dort in Deutsch mitsamt Umlauten verfasst habe. Während klassische Texteditoren diesen Umlaut in macOS durch ein Sonderzeichen ersetzt haben, wurden Zeilen, die irgendwo einen Umlaut enthielten, in der IDLE gar nicht erst angezeigt.
    Die Lösung des Problems ist allerdings relativ einfach: Indem man einen der Umlaute in einem Texteditor ersetzt und die Datei dann wieder in die IDLE einliest, wird diese Zeile anschließend in der IDLE angezeigt. Anschließend kann man diese Ersetzung in der IDLE rückgängig machen und wieder durch den Umlaut ersetzten. Beim Abspeichern wird man dann gefragt, ob man die Datei als utf-8 speichern möchte, weil Non-ASCII's gefunden wurden. Alternativ kann man auch die Zeile # -*- coding: utf-8 -*- in Datei schreiben. Erneutes Öffnen der Datei behebt den Fehler.
    Lord-Hagen ist offline Geändert von Lord-Hagen (28.12.2016 um 10:09 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •