Problem mit os.py

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.
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Hallo, ich hab ein Problem:
Ich versuche in einem PC Spiel, das auch python unterstützt ein modul einzubinden. Es würde mir schon reichen, wenn das os modul gehen würde, dann könnte ich alle meine gewünschten sachen über eine bat oder exe machen.

Wenn ich jedoch das os einbinden will, kommt diese meldung:
File "mods/reloaded/python\game\os.py", line 128, in ?
raise ImportError, 'no os specific module found'
ImportError: no os specific module found

Ich hab nichts in os.py geändert, habe aber so das gefühl, dass os.py durch das PCspiel (Battlefield 2) durcheinandergebracht wird.

Kann mir jemand helfen?

P.s.: Bitte detailierte anworten geben, ich bin ein python noob.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Hallo Krauzi selbst beim Import von os braucht man einige weiter Module die wiederrum von os importiert werden.
Hier die Abhängigkeit die mir ipython angibt. Weiß aber gerade nicht ob der so weit runter geht das alle benötigten Module aufgeführt werden.

Code: Alles auswählen

In [8]: dreload(os)
Reloading os
Reloading nt
Reloading ntpath
Reloading stat
Reloading UserDict
Reloading copy_reg
Reloading types
Reloading _types
Out[8]: <module 'os' from 'C:\Python25\lib\os.pyc'>
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Das man weitere module braucht ist mir bekannt. Ich habe testweise mal alle module aus dem python ordner reingezogen, aber es klappt immer noch nicht. Außerdem würde dann eine andere fehlermeldung kommen. Ich hab so das gefühl, dass kein Betriebsystem erkannt wird, und so die ganzen ifs/elifs die for der o.g. fehlermeldung stehen nicht zutreffen und dann mit dem letzten else die o.g. fehlermeldung ausgegeben wird. Ist es auch möglich - es soll sowieso nur unter windows laufen - einfach als betriebsystem für os.py NT zu setzten?

P.s.: Ich finde die module nt und _types nicht.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

mir fällt gerade auf: Wie versuchst Du eigentlich zu importieren? Im Traceback ist der Pfad mit Slashes und Backslashes gemischt angegeben. Das ist schon mal recht seltsam.
Und dann finde ich noch den Text der Fehlermeldung seltsam. Gut, den kann natürlich wer auch immer hier Python embedded hat überschrieben haben, aber was ist denn mit 'os specific' in dieser Applikation gemeint?

Gruß,
Christian
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Also für micht ist das klar: Er findet kein zutreffendes Betriebsystem. Schau mal in Zeile 127. Das steht ein ELSE:.......
Kann ich einfach das betriebsystem festsetzen?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Wie wäre etwas Code? Oder meinst Du jeder hat das Spiel installiert? ;-)
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

code?
wieso brauchst du den code dazu? Code kann ich nicht liefern, das is nicht opensource. Aber sagt mir jemand doch einfach, wie ich das betriebsystem festlege bzw. wie ich os.system zum laufen kriege. Evtl muss doch einfach nur definiert werden, was bei system zu tun ist.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Woher weißt Du was in Zeile 127 steht? Stehe ich jetzt auf dem Schlauch und habe was übersehen?
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

in os.py steht die im ersten post genannte fehler meldung in zeile 127.
Du kannst auch in zeile 127 springen:
1.) os.py mit Editor (alles windoof) öffnen
2.) STRG+G
3.)127+Enter/Return
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Arrgh. Du meinst das Standard-os-Modul? Da steht in meiner Version in Zeile 127 etwas Anderes. ;-)
Aber ich glaube ich weiß was Du meinst.
Was passiert, wenn Du im Interpreter

Code: Alles auswählen

>>> import sys
>>> sys.builtin_module_names
machst? Was erscheint da?

Und, ganz doof gefragt: Kannst Du os im Interpreter importieren?
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

oh shit.
Ich hab in python version 2.3.4 geschaut. Das unterstützt bf2.
aber bf2 hat leider noch nicht das os modul.
Das kommt bei sys.....:
('__builtin__', '__main__', '_ast', '_bisect', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw', '_csv', '_functools', '_heapq', '_hotshot', '_locale', '_lsprof', '_md5', '_multibytecodec', '_random', '_sha', '_sha256', '_sha512', '_sre', '_struct', '_subprocess', '_symtable', '_types', '_weakref', '_winreg', 'array', 'audioop', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'collections', 'datetime', 'errno', 'exceptions', 'gc', 'imageop', 'imp', 'itertools', 'marshal', 'math', 'mmap', 'msvcrt', 'nt', 'operator', 'parser', 'rgbimg', 'signal', 'strop', 'sys', 'thread', 'time', 'xxsubtype', 'zipimport', 'zlib')
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Wie kann Python unterstützt werden, wenn solche Basismodule fehlen?
Das bringt mich zurück zu meiner Frage, weshalb da so ein Mix von Slashes ist. Was passiert da beim Import?

Hat sonst noch jemand dieses Spiel und kann das Problem nachvollziehen?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Krauzi hat geschrieben:Das kommt bei sys.....:
(... 'nt', ..., 'zlib')
Also daran liegt es nicht! 'nt' ist drin. Es ist also nicht so das die Pythoninstallation irgendwo Murks ist.
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Gibt es noch nen anderen weg, eine externe exe zu starten?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

In 2.3.4? os.popen ... ;-)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

In 2.3.4? os.popen ... ;-)
Sorry, aber eine Idee habe ich noch: Was steht in dem \game-Ordner ?
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Hm. ok. Aber das hilft mir auch nicht direkt weiter. Ich muss einfach noch weitere module in BF2 importieren. Aber meistens brauchen die Module das os modul xD. Und da kommt das hier:
File "mods/reloaded/python\game\test.py", line 3, in ?
import zipfile
File "mods/reloaded/python\game\zipfile.py", line 3, in ?
import struct, os, time
File "mods/reloaded/python\game\os.py", line 25, in ?
_names = sys.builtin_module_names
NameError: name 'sys' is not defined.

Ich hab hier mal testweise zipfile.py importiert (import zipfile).
Aber zur ersten frage: Wie definier ich das betriebsystem??
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Nochmal zur ersten Frage: Wieso steht da z. B. "mods/reloaded/python\game\zipfile.py"? Wieso setzt sich der Pfad so zusammen? Auf Windows müßte es doch *nur* '\' geben, oder?

edit: Nur damit Du weißt, das ich Deine Frage nicht ignoriere: Es gilt nicht das Betriebssystem zu ermitteln, sondern Python in die Lage zu versetzen das selbstständig zu tun.
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Ich weis auch nicht wieso der BF2 debugger das mit / und \ schreibt. Aber auf jedenfall klappt es. Aber ich muss die Betriebsystem abfrage abstellen. Sonst geht da überhaupt nix. os.py muss/soll das betriebssystem nicht abfrage. Das betriebsystem ist immer (IMMER) "nt" (XP/2000). Er soll einfach nur os.system ("exe.exe") ausführen. Ginge es eigentlich noch einfacher, wenn ich nur os.system definiere (leider ka wie).

P.s.: @ CM das du meine frage nicht ignorierst, merke ich an deinen super schnellen und zahlreichen antworten :-)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

*duck* Kann man os.py etc. einfach in das \games-Directory kopieren?*duck*
Antworten