2to3

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.
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hallo zusammen

Ich muss hier an der Uni den Sourcecode (der in python 2.6 geschrieben wurde) nach 3.0.1 konvertieren. Dafür gibt es ja 2to3. Wie rufe ich das am besten auf? Wenn ich auf der Kommandozeile ins Verzeichnis wechsle, in dem sich das .py-file befindet, dass ich konvertieren möchte und dann 2to3 aufrufe, dann erscheint die Meldung:

'2to3' is not recognized as an internal or external command,
operable program or batch file.

Was muss ich jetzt machen? Ich kenne mich nicht so aus mit der Windows-CMD.

Besten Dank für Hinweise.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Finde heraus wo ``2to3`` bei dir liegt. Bei mir ist das in ``$PREFIX/bin/2to3``. Dann ließt du die FAQ zum Thema "Wie starte ich Skripte".
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hallo

Bei mir ist das etwas anders:
das Programm "2to3" befindet sich in

C:\Program Files\python_301\Lib\lib2to3

Genauer gesagt, es gibt eigentlich kein Programm das genau "2to3" heisst, sonder nur ein Modul das "main.py" heisst. Ich habe jetzt in einer cmd-shell dieses Verzeichnis geöffnet und >python main.py ausgeführt, aber eine Fehlermeldung bekommen.

Traceback (most recent call last):
File "main.py", line 11, in (module)
from . import refactor
ValueError: Attempted relative import in non-package


Was sollte ich anders machen? Ich meine, ich muss ja irgendwie angeben können, welches Modul von 2 nach 3 konvertiert werden soll. Was mich auch wundert ist, dass es mit MacOs offenbar viel einfacher ist, da kann einfach an einer beliebigen Stelle 2to3 module.py eingegeben werden und es funktioniert.
BlackJack

@mzh: Das Programm befindet sich, wie Du ja schon selber herausgefunden hast, dort nicht, bzw. fehlt Dir anscheinend der "Starter", der die `lib2to3` verwendet. Was liegt denn in dem `bin/`-Verzeichnis dieser Python-Installation?
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

BlackJack hat geschrieben:@mzh: Das Programm befindet sich, wie Du ja schon selber herausgefunden hast, dort nicht, bzw. fehlt Dir anscheinend der "Starter", der die `lib2to3` verwendet. Was liegt denn in dem `bin/`-Verzeichnis dieser Python-Installation?
Hallo
Hm, bei mir ist der Verzeichnisbaum so:

"C:\Program Files\python_301\Lib\lib2to3"

Da gibt es kein \bin-Verzeichnis. Wenn das \bin-Verzeichnis aber das Verzeichnis sein soll, in dem sich alle Files befinden, die durch die Python-Installation erstellt wurden (also \python_301), dann hat es da ein paar Ordner und drei .exe-Files drin (DLL, Doc, include, Lib, libs, tcl, Tools, *.txt, python.exe, pythonw.exe, w9xpopen.exe).
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Eigentlich gibt es da doch nur einen Ordner in dem Werkzeuge versteckt sein könnten und mehr als RTFM kann man dazu dann auch nicht sagen. Alternativ hilft auch Google oder die Windows-Suche.
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Darii hat geschrieben:Eigentlich gibt es da doch nur einen Ordner in dem Werkzeuge versteckt sein könnten und mehr als RTFM kann man dazu dann auch nicht sagen. Alternativ hilft auch Google oder die Windows-Suche.
Super. Funktioniert.
Ich würde aber trotzdem sehr gerne wissen (und ich wäre echt dankbar dafür, wenn man mir sagen könnte, wie man das macht) was ich tun muss, damit ich "2to3" über die cmd-Shell von jedem Verzeichnis aus starten kann.
Ich musste jetzt in das oben genannte Verzeichnis wechseln, und dann

>2to3.py -w ..\..\..\..\Studium\MA\python_beginning\bonds.py

eingeben. Mein Kollege kann auf seinem Mac einfach ins Verzeichnis gehen, wo die Datei liegt, die er verändern möchte und dann

>2to3 bonds.py

eingeben. Wieso geht das bei mir nicht? Bzw. wieso wird der Befehl nur erkannt, wenn man sich gerade in dem Verzeichnis befindet, wo sich das Programm drin befindet? Notepad kann ich ja auch von überall her starten!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Weil der Ordner von Notepad im %PATH% liegt und der von ``2to3`` nicht. Wie man das ändert steht in den FAQ.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Leonidas hat geschrieben:Weil der Ordner von Notepad im %PATH% liegt und der von ``2to3`` nicht. Wie man das ändert steht in den FAQ.
Danke sehr.
Wie man es ändert, denke ich, weiss ich. DASS es geändert werden muss, und in welcher Situation, davon verstehe ich wenig.
Wenn ich es richtig (!?) verstehe, dann bedeutet das, dass ich der PATH-Variable noch den Pfad zum "2to3.py" hinzufügen muss. Wie gesagt, wie soll man als Nicht-Systemtechniker darauf kommen?
BlackJack

@mzh: Was heisst "Nicht-Systemtechniker"? Als Programmierer muss man halt so viel Wissen über sein System haben, wie Programme vom System gefunden und ausgeführt werden. Und wer ausser Programmierern braucht `2to3.py`?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Als Programmierer muss man halt so viel Wissen über sein System haben, wie Programme vom System gefunden und ausgeführt werden.
Generell: je mehr man von seinem System versteht desto besser. Ich bin ja immer wieder total fasziniert von den PHP-Leuten die ihre Skripte schreiben, aber eigentlich gar nicht wissen wie HTTP funktioniert.
Daher: bevor man anfängt zu programmieren besser eine möglichst breite Wissensbasis schaffen. Also zum Beispiel die guten alten Suse (nun Millin) Handbücher lesen, Dinge einrichten, ausprobieren etc. Da bleibt schon irgendwas hängen und spätestens wenn man etwas in der Richtung programmieren will/muss kommt sowas sehr nützlich.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

mzh hat geschrieben:Hm, bei mir ist der Verzeichnisbaum so:

"C:\Program Files\python_301\Lib\lib2to3"
Unter OSX liegt 2to3 im bin-Ordner. Gibt es da unter Windows nicht so einen Scripts-Verzeichnis? Da müsste doch ein `2to3.bat`o.ä. zu finden sein.

Stefan
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Erstell Dir doch eine Desktop-Verknüpfung von 2to3.py (evtl. mit den benötigten Parametern wie z.B. -w) und ziehe die Scripts, die Du konvertieren willst, einfach auf das Icon.
MfG
HWK
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Danke echt für eure Antworten. Tja, wer braucht 2to3.py? Ich glaub ich fang gar nicht erst an... Der Punkt ist, der Prof hat mir gesagt, ich soll das machen. Da bleibt einem nicht viel anderes übrig, als die Suppe auszulöffeln.
Gruss

PS: Noch eine weitere Frage (ist Off-Topic, ich hoffe macht nichts):
Gibt es ein Programm, dass mir aus den 20-30 .py-Files, die ich in einem Verzeichnis habe und die ein ganzes Programm darstellen, ein UML-Diagramm erstellt?
Zuletzt geändert von mzh am Samstag 7. März 2009, 23:02, insgesamt 1-mal geändert.
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

sma hat geschrieben:
mzh hat geschrieben:Hm, bei mir ist der Verzeichnisbaum so:

"C:\Program Files\python_301\Lib\lib2to3"
Unter OSX liegt 2to3 im bin-Ordner. Gibt es da unter Windows nicht so einen Scripts-Verzeichnis? Da müsste doch ein `2to3.bat`o.ä. zu finden sein.

Stefan
Jop, also es gibt /Tools/Scripts/2to3.py
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

HWK hat geschrieben:Erstell Dir doch eine Desktop-Verknüpfung von 2to3.py (evtl. mit den benötigten Parametern wie z.B. -w) und ziehe die Scripts, die Du konvertieren willst, einfach auf das Icon.
MfG
HWK
Danke, wusste nicht, dass man das auch so machen kann. Geht das auch mit einigen Dutzend Scripts auf einmal?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

mzh hat geschrieben:PS: Noch eine weitere Frage (ist Off-Topic, ich hoffe macht nichts):
Gibt es ein Programm, dass mir aus den 20-30 .py-Files, die ich in einem Verzeichnis habe und die ein ganzes Programm darstellen, ein UML-Diagramm erstellt?
Ähnliches Thema
MfG
HWK
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Wunderbar.

Ich habe jetzt der Pfad-Variable noch einen Pfad zum \Scripts-Verzeichnis hinzugefügt und ich kann jetzt von jedem Verzeichnis aus die Skripte die dort drin sind aufrufen. Wunderbar. Recht herzlichen Dank für eure Tipps.

Was würde dann eigentlich dagegen sprechen, in %PATH% einen Pfad zu setzen, der das \Program Files-Verzeichnis enthält? So dass jedes Programm das darin enthalten ist, aufgerufen werden kann?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mzh hat geschrieben:Was würde dann eigentlich dagegen sprechen, in %PATH% einen Pfad zu setzen, der das \Program Files-Verzeichnis enthält? So dass jedes Programm das darin enthalten ist, aufgerufen werden kann?
Das würde nicht funktionieren, denn in dem Ordner sind üblicherweise die Ordner der Programme, nicht die EXE-Dateien selbst. Du müsstest also quasi jedes Programm einzeln mit Pfad in %PATH% eintragen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Leonidas hat geschrieben:
mzh hat geschrieben:Was würde dann eigentlich dagegen sprechen, in %PATH% einen Pfad zu setzen, der das \Program Files-Verzeichnis enthält? So dass jedes Programm das darin enthalten ist, aufgerufen werden kann?
Das würde nicht funktionieren, denn in dem Ordner sind üblicherweise die Ordner der Programme, nicht die EXE-Dateien selbst. Du müsstest also quasi jedes Programm einzeln mit Pfad in %PATH% eintragen.
Aha, ja das habe ich mir schon fast gedacht. Was mich einfach irritiert ist die Tatsache, dass trotz der nicht zu überschätzenden Bedeutung dieser Path-Variablen, kein vernünftiges Editierfenster dazu gemacht wurde. Ich finde es eine Zumutung, zwanzig Pfade in einem Zeileneintrag machen zu müssen, der sich nicht mal vergrössern lässt. Und das ist wohl schon über mehrere Versionen von Windows so.
Wenn ich das richtig verstehe, dann gibt es auch keine Möglichkeit, der Übersicht halber, für jede EXE-Datei, eine eigene Path-Variable zu setzen:

PATH1 = C:\Programme\Matlab
PATH2 = C:\Programme\Photoshop
etc.
So dass man ein bisschen die Übersicht hat.
Antworten