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

2to3

Beitragvon mzh » Freitag 6. März 2009, 11:23

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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 6. März 2009, 11:51

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

Beitragvon mzh » Freitag 6. März 2009, 14:42

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

Beitragvon BlackJack » Freitag 6. März 2009, 16:07

@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

Beitragvon mzh » Freitag 6. März 2009, 16:46

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

Beitragvon Darii » Freitag 6. März 2009, 17:22

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

Beitragvon mzh » Freitag 6. März 2009, 18:04

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!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 6. März 2009, 18:28

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

Beitragvon mzh » Freitag 6. März 2009, 23:53

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

Beitragvon BlackJack » Samstag 7. März 2009, 00:15

@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`?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 7. März 2009, 02:41

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 Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Samstag 7. März 2009, 11:38

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

Beitragvon HWK » Samstag 7. März 2009, 14:29

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

Beitragvon mzh » Samstag 7. März 2009, 22:52

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

Beitragvon mzh » Samstag 7. März 2009, 22:58

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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Google [Bot]