Error runpy.py ", line 183, in _run_module_as_main

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
markushoffmann113
User
Beiträge: 3
Registriert: Sonntag 17. Februar 2019, 11:58

Hallo allerseits,
Ich bin ein kompletter Anfänger auf python und versuche eine Fehlermeldung zu verstehen, dazu unten mehr.

Ich habe ein Programm von github geladen, wo ich mir sicher bin, dass es funktioniert, anbei der link: https://github.com/andrewgodwin/lidartile

Ich habe Python 3.8.0a1 installiert und mit der Befehlszeile auf github das programm ausgeführt, mit folgendem Fehler:

Code: Alles auswählen

C:\>cd lidartile-master

C:\lidartile-master>python -m lidartile.cli -d 4 -f 0.5 -b 5 -c 2 -z 1.5 -s 3 -m 2 ~/Downloads/LIDAR-DSM-1M-TQ37/tq3979_DSM_1m.asc
Traceback (most recent call last):
  File "C:\Python\Python38\lib\runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "C:\Python\Python38\lib\runpy.py", line 153, in _get_module_details
    code = loader.get_code(mod_name)
  File "<frozen importlib._bootstrap_external>", line 910, in get_code
  File "<frozen importlib._bootstrap_external>", line 840, in source_to_code
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\lidartile-master\lidartile\cli.py", line 34
    print "Clipping..."
          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Clipping...")?
Nachdem ich nun etliche Stunden gesucht habe, dürfte es damit zu tun haben, das ein Pfad nicht absolut angegeben ist und das Problem nur auftritt, wenn ich das programm mit python -m starten möchte. Es dürfte da eine Änderung in python gegeben haben? oder Windows?

Leider bin ich momentan etwas ratlos, vieleicht könnt ihr mir helfen?

lg Markus
Benutzeravatar
Perlchamp
User
Beiträge: 172
Registriert: Samstag 15. April 2017, 17:58

@markus :
Hallo, ich bin auch Anfänger. Hast du dir mal die letzte Zeile der Fehlermeldung richtig angeschaut ?
Scheint so, dass dieses Skript in Python 2 geschrieben worden ist. Meine, mich dunkel daran erinnern zu können, dass man damals die print-Anweisung ohne ein Klammerpaar schreiben konnte. Geht in Python 3 nicht.
wer lesen kann ist klar im Vorteil ;-)
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
Benutzeravatar
__blackjack__
User
Beiträge: 13068
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@markushoffmann113: Das ist für Python 2. Da war ``print`` eine Anweisung. In Python 3 ist es eine Funktion. Es gibt auch noch andere Unterschiede.

Das Python 3.8 was Du da hast ist noch eine Entwickler/Alpha-Version. Ich würde ja bei normalen Versionen bleiben.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
markushoffmann113
User
Beiträge: 3
Registriert: Sonntag 17. Februar 2019, 11:58

yep, danke für den hinweis, ist python 2 :-)
markushoffmann113
User
Beiträge: 3
Registriert: Sonntag 17. Februar 2019, 11:58

Aber ich hab auch gleich die nächste Frage:

Ich kann mit dem Befehl ja auch mehrere Dateien konvertieren. Irgendwie funktioniert das nicht,..
Gibt es einen Unterschied zwischen windows und Linux in Python wie man einen Pfad aufruft / übergibt?

Anbei die Fehlermeldungen von meinen Versuchen:

Code: Alles auswählen

C:\lidartile-master>python -m lidartile.cli -f 0.5 -b 5 -c 2 -z 1.5 -s 3 -m 2 c:\lidartile-master\Wien\*.*
Traceback (most recent call last):
  File "C:\Python27\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\lidartile-master\lidartile\cli.py", line 57, in <module>
    main()
  File "C:\lidartile-master\lidartile\cli.py", line 29, in main
    ingestor.load()
  File "lidartile\ingestor.py", line 35, in load
    self.left, self.bottom, self.right, self.top, self.cellsize = self.find_limits()
  File "lidartile\ingestor.py", line 67, in find_limits
    with open(filename, "r") as fh:
IOError: [Errno 22] invalid mode ('r') or filename: 'c:\\lidartile-master\\Wien\\*.*'
Variante 2:

Code: Alles auswählen

C:\lidartile-master>python -m lidartile.cli -f 0.5 -b 5 -c 2 -z 1.5 -s 3 -m 2 c:\lidartile-master\Wien\
Traceback (most recent call last):
  File "C:\Python27\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\lidartile-master\lidartile\cli.py", line 57, in <module>
    main()
  File "C:\lidartile-master\lidartile\cli.py", line 29, in main
    ingestor.load()
  File "lidartile\ingestor.py", line 35, in load
    self.left, self.bottom, self.right, self.top, self.cellsize = self.find_limits()
  File "lidartile\ingestor.py", line 67, in find_limits
    with open(filename, "r") as fh:
IOError: [Errno 2] No such file or directory: 'c:\\lidartile-master\\Wien\\'

Variante 3:

Code: Alles auswählen

C:\lidartile-master>python -m lidartile.cli -f 0.5 -b 5 -c 2 -z 1.5 -s 3 -m 2 c:\lidartile-master\Wien
Traceback (most recent call last):
  File "C:\Python27\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\lidartile-master\lidartile\cli.py", line 57, in <module>
    main()
  File "C:\lidartile-master\lidartile\cli.py", line 29, in main
    ingestor.load()
  File "lidartile\ingestor.py", line 35, in load
    self.left, self.bottom, self.right, self.top, self.cellsize = self.find_limits()
  File "lidartile\ingestor.py", line 67, in find_limits
    with open(filename, "r") as fh:
IOError: [Errno 13] Permission denied: 'c:\\lidartile-master\\Wien'
über einen Hinweis wäre ich euch wieder sehr dankbar!!!

lg Markus
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Anscheinend wird ein Dateiname erwartet. Du übergibst bei deinen Ratespielen jedoch Wildcards (*.*) oder einen Ordner. Also einfach mal das richtige übergeben bzw die Dokumentation (falls vorhanden) aufmerksam studieren. ;)
Benutzeravatar
Perlchamp
User
Beiträge: 172
Registriert: Samstag 15. April 2017, 17:58

@ markushoffmann113:
snafu hat's bereits gesagt:
du mußt explizit eine Datei in deinem Pfad angeben. Beispielsweise "../Wien/datei.txt". DIese muß dann natürlich auch vorhanden sein (Modus 'r' für lesen).
Und ja, es gibt Unterschiede in der Pfadangabe (Windows<=> Unix/Linux). Da bei dir alles auf *C:* liegt kannst du auch in Windows die Pfadangaben mittels Slash (/) übergeben bzw. schreiben, also c:/python27/scripts ....
Und denke einmal ernsthaft darüber nach, Python 3 zu verwenden !
wer lesen kann ist klar im Vorteil ;-)
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
Benutzeravatar
__blackjack__
User
Beiträge: 13068
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Perlchamp: Das Programm das er da heruntergeladen hat ist für Python 2 geschrieben. Wenn er dafür Python 3 verwenden möchte, müsste er das Programm selbst nach Python 3 portieren.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
Perlchamp
User
Beiträge: 172
Registriert: Samstag 15. April 2017, 17:58

@ _blackjack_ :
ja, ich weiß (Python27), danke. Bekommt er schon (irgendwie) hin. Wäre dann auf jeden Fall *zukunftssicher* ;-)
wer lesen kann ist klar im Vorteil ;-)
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
Antworten