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.
Problem mit os.py
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.
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'>
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.
P.s.: Ich finde die module nt und _types nicht.
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
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
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?
Kann ich einfach das betriebsystem festsetzen?
Wie wäre etwas Code? Oder meinst Du jeder hat das Spiel installiert?
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.
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.
Woher weißt Du was in Zeile 127 steht? Stehe ich jetzt auf dem Schlauch und habe was übersehen?
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
Du kannst auch in zeile 127 springen:
1.) os.py mit Editor (alles windoof) öffnen
2.) STRG+G
3.)127+Enter/Return
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
machst? Was erscheint da?
Und, ganz doof gefragt: Kannst Du os im Interpreter importieren?
Aber ich glaube ich weiß was Du meinst.
Was passiert, wenn Du im Interpreter
Code: Alles auswählen
>>> import sys
>>> sys.builtin_module_names
Und, ganz doof gefragt: Kannst Du os im Interpreter importieren?
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')
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')
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?
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?
Also daran liegt es nicht! 'nt' ist drin. Es ist also nicht so das die Pythoninstallation irgendwo Murks ist.Krauzi hat geschrieben:Das kommt bei sys.....:
(... 'nt', ..., 'zlib')
Gibt es noch nen anderen weg, eine externe exe zu starten?
In 2.3.4? os.popen ...
In 2.3.4? os.popen ...
Sorry, aber eine Idee habe ich noch: Was steht in dem \game-Ordner ?
Sorry, aber eine Idee habe ich noch: Was steht in dem \game-Ordner ?
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??
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??
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.
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.
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
P.s.: @ CM das du meine frage nicht ignorierst, merke ich an deinen super schnellen und zahlreichen antworten
*duck* Kann man os.py etc. einfach in das \games-Directory kopieren?*duck*