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.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Donnerstag 14. Februar 2008, 19:11

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:

Beitragvon Krauzi » Donnerstag 14. Februar 2008, 19:15

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:

Beitragvon CM » Donnerstag 14. Februar 2008, 19:19

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:

Beitragvon Krauzi » Donnerstag 14. Februar 2008, 19:36

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:

Beitragvon CM » Donnerstag 14. Februar 2008, 20:06

*duck* Kann man os.py etc. einfach in das \games-Directory kopieren?*duck*
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Beitragvon Krauzi » Donnerstag 14. Februar 2008, 20:12

hab ich schon gemacht. Aber dann kommt die fehler meldung, die ich im ersten post geschrieben hab. Er erkennt einfach das betriebsystem nicht. Am einfachsten währe es, wenn ich os.sytstem definieren würde. Kann mir hier einer helfen?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 14. Februar 2008, 21:07

Du kannst "os.system" nicht definieren, da es eine Funktion des os-Moduls ist. D.h. du musst die Funktion also reimplementieren. Und das ist nichttrivial, dazu könntest du ctypes verwenden um die Win32 API-Funktion CreateProcess aufzurufen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Freitag 15. Februar 2008, 06:28

Also Battlefield 2 hab ich nicht, sondern BF2142. Dort liegt im root Verzeichnis ein Zip File mit dem Namen pylib2.3.4.zip in diesem File finde ich unter anderem auch das os-modul. Ist das bei BF2 auch so aufgebaut?
Hast du auch ein solches File?
Ich hab nun keine Ahnung (und auch nicht das große Interesse) wie man mit dem eingebauten Pythoninterpreter von BF rumspielen kann um zu testen ob das hier geht.
Ich denke mal das es ansonsten ne gute Idee wäre in der BF2 Community rumzuhorchen. Kann mir kaum vorstellen das nicht schonmal irgendwelche Modder erweiterte Funktionalität eingebaut haben.
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Beitragvon Krauzi » Freitag 15. Februar 2008, 14:54

pylib2.3.4.zip -> richtig. Ich hätte nie daran gedacht. Ich teste jetzt mal ob es geht. (Bf2142 ist eigentlich nur ein gemodetes bf2xD)

THXTHXTHX Für den tip.....
MfG Krauzi

EDIT: Ich hab jetzt mal das module zipfile importiert. Da kommt immer dieser fehler:
File "mods/reloaded/python\game\test.py", line 1, in ?
import zipfile
File "pylib-2.3.4.zip\zipfile.py", line 4, in ?
ImportError: No module named binascii

Edit2: Wenn ich os.py in die lib.zip von BF2 kopier, kommt immer :
'module' object has no attribute 'system'
Krauzi
User
Beiträge: 77
Registriert: Montag 22. Oktober 2007, 18:06
Kontaktdaten:

Beitragvon Krauzi » Sonntag 17. Februar 2008, 16:50

Kann keiner helfen?

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], noisefloor