Blender Python Fehlermeldung

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Dienstag 27. Februar 2007, 19:48

Ups,
kann man da nicht irgendwas machen, das der Standard-Browser aufgerufen wird?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Dienstag 27. Februar 2007, 19:51

*hust* ...

Code: Alles auswählen

import webbrowser

webbrower.open('http://www.python-forum.de')
;)

Aber so entstand ja dieser Thread *g*, das funktionierte bei Dir ja nicht.

Das Problem könnte "eventuell" beim Umfang des Pythons von Blender auch sein. Je nachdem wie os.startfile() dort tatsächlich realisiert ist.

Deine ursprüngliche Fehlermeldung:

Code: Alles auswählen

[Errno 2] Das System kann die angegebene Datei nicht finden:
'http://www.3dpowertower.de'
lässt fast schon eher vermuten, als würde der URL-String mittels .startfile nativ und platt auf das Dateisystem geschossen. Das das natürlich dann nicht funkioniert ist klar.

Wenn aber die Windows Ebene, die für gelinkte Anwendungen zuständig ist, erkennt dass hinter dem Aufruf eigentlich eine Website steht (z.B erkannt durch die typischen Merkmale 'http', 'https', 'www', etc.), nicht übergangen wird, sowie richtig eingestellt ist, so müsste es funktionieren.

Soviel leider aber zur Theorie ... es scheint nicht immer wie erwartet zu funktionieren.
Zuletzt geändert von Masaru am Dienstag 27. Februar 2007, 19:59, insgesamt 2-mal geändert.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Dienstag 27. Februar 2007, 19:54

Pardon :oops:
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Dienstag 27. Februar 2007, 20:17

Wenn ich das Gleiche mit Opera mache klappts auch.
Mache ich das aber mit Fire Fox klappts seltsamerweise nicht.
Warum ist das so?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Dienstag 27. Februar 2007, 20:36

Kommt drauf an ... wenn folgende Fehlermeldung kommt: OSError: [Errno 22] Invalid argument

... dann "kann" es daran liegen, dass der Pfad zur "firefox.exe" eigentlich ein wenig explosiv angegeben ist. Bei mir war es jedenfalls so.

Er enthält escape Zeichen (\), welche besser richtig (\\) angegeben werden sollten.

So wird z.B. aus dem: \f
vorn: ... \firefox.exe
welches Steuerungszeichen für Formfeed steht, ein sehr kryptisches Gebilde, weshalb im Dateisystem mittels diesem natürlich die Datei nicht mehr auffindbar ist.

Am besten mal ein: r
vor den String mit dem gesamten Verzeichnispfad schreiben, dann wird daraus automatisch ein raw_string string, mit konvertierten escape zeichen gemacht.

Z.B.: os.spawnl(os.P_NOWAIT, r"D:\_PROGRAMME_\Mozilla Firefox\firefox.exe", "firefox.exe", "http://www.python-forum.de")
Zuletzt geändert von Masaru am Dienstag 27. Februar 2007, 20:47, insgesamt 1-mal geändert.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Dienstag 27. Februar 2007, 20:44

Oha.
Das klappt.
Da kann man dann immer noch mit leben, daß man eine Installation von Fx in C:\Programme\ voraussetzt, damit der 3D-Raum gestartet werden kann.
Außerdem konnte man ja 3 verschiedene RAR.exe anbieten.
Fire Fox, Opera und Netzcape.
Das wär doch immer noch besser als die Installation eines ActiveX zu fordern oder?

Danke dieter1a
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Dienstag 27. Februar 2007, 20:50

Hmm ... Gegenfrage ... in der Zeit der Trojaner, Viren und Würmer .. würde ein Benutzer eher eine Executable oder ein ActiveX (welches der Browser vorschlägt) installieren?

*schulterzuck*

Ich würde weder das eine noch das andere tun *g*.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Dienstag 27. Februar 2007, 20:56

Das wäre auch nur der Einfachheithalber vorzuschlagen.
Man könnte auch den Downlos eines ganzen Ordners vorschlagen, den man dann einfach nach c:\ kopiert
Aber nicht jeder kann das möglicherweise.
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Dienstag 27. Februar 2007, 21:01

Wenn ich mir Blender so anschaue ... dann fällt mir spontan auf, dass das Ding ja unter verschiedenen Platformen auch läuft.

Am idealsten wäre etwas, was nicht rein auf Windows beschränkt ist.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Dienstag 27. Februar 2007, 21:07

Man kann natürlich für alle Platformen eine ausführbare anbieten.
Aber auf den Rechner müssen erstmal alle.
Die Datei ist zu groß, um sie übers Netz auszuführen.
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Dienstag 27. Februar 2007, 22:17

Ich meine damit auch eher, dass Du bei den pythonischen Komponenten eher dafür schon sorgen solltest, dass es Plattformübergreifend bleibt.

Z.B. könntest Du:
- plattform übergreifendes Verhalten implementieren (etwa wie Wrapper Klassen, Case-Unterscheidungen, etc.)
- die Pfade zu den Browsern konfigurierbar halten
- gestufte webbrowser-Aufrufversuche (z.B. erst mit webbrowser.open, dabei OSError catchen, und dann vielleicht eine eigene Strategie ausprobieren)
- etc. etc.

Was ich nicht machen würde, ist hart den Pfad zu den Browser hinneincodieren.

Gemeiner könnte man sich nicht selber in eine Sackgrasse bringen ;).
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Dienstag 27. Februar 2007, 22:30

Aber was nützt mir der gute Wille wenn das 'webbrowser.open()' nicht geht?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Dienstag 27. Februar 2007, 22:54

Das Komponenten immer mal nicht funktionieren (gerade bei einer interpretierten Sprache wie Python) kann immer vorkommen.

Vielleicht funktioniert ja "webbrowser.open" (genauer, os.startfile, falls man auf einer Windows Kiste ist) lediglich auf Deinem System nur nicht.

Bei dem mitglieferten Python-Package in Blender sieht es für mich nach einem Py2Exe oder PyInstaller Bundle Zip-Bundle mit Interpreter-DLL aus (in der aktuellen Version ist es Python24).

Folglich ... kann es sein, dass der Fehler auch dort liegen könnte.

Wenn man das rausbekommt, und Dein System komplett ausschließen kann, könnte man soetwas patchen (oder es der Blender-Development Community mitteilen, sowie dann auch einen baldigen Patch warten).

Aber ... wer wartet schon gerne ;)? Also bleibt einem noch die Möglichkeit sich eine entsprechende Umgebung aufzubauen, die möglichst so viele Ziele abdecken kann wie möglich. Dabei muss natürlich Nutzen und Aufwand gegeneinader immer abgewogen werden.

Wenn ich als Entwickler für eine breit gefächerte Menge an Kunden tätig bin, zu denen ich (im Gegensatz wie bei einem Projekt) keinen direkt Kontakt habe ... dann gehe ich dabei immer so sicher, skalierbar und transparent wie ich es als Kunde erwarten würde vor.

Und ich als Kunde - eventuell sogar aus der Blender Community - würde weder erwarten, dass ich bei dem Background eine Windowskiste nutzen, noch explizit den Internet Explorer an einem fest vorgebenen Platz plaziert haben muss.
Zuletzt geändert von Masaru am Dienstag 27. Februar 2007, 23:05, insgesamt 1-mal geändert.
Benutzeravatar
dieter1a
User
Beiträge: 75
Registriert: Montag 26. Februar 2007, 13:08
Wohnort: Bad Rothenfelde
Kontaktdaten:

Dienstag 27. Februar 2007, 23:04

Ich muß das Ganze auf einer Kiste lauffähig machen, auf der kein Python installiert ist.
Ich muß mit dem auskommen was das Blenderprojekt drauf oder drin hat.
Ich kann von niemanden erwarten, daß er sich erst Python installiert, die Pfade setzt und womöglich noch eine Umgebungsvariable eingibt nur weil er sich in einem 3D-Raum umsehen möchte.
So wünschenswert das auch wäre, daß sich die Leute mit Python beschäftigen.
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Dienstag 27. Februar 2007, 23:14

Meine ich auch alles gar nicht.
Denn das eine schließt dann andere nicht aus.

Was ich aber meine ist, dass ein hartes setzen der Executable-Pfade zum Internet Explorer mit das schlimmste wäre, was man tun könnte.

Weil wenn dann beim Zielrechner der Explorer doch wo anders liegt ... dann "muss" sich plötzlich der Benutzer mit Python und Python Programmieren auseinander setzen.

Anstelle vielleicht einfach nur eventuell in einer flexibel konfigurierbaren INI-File diesen Pfad mit dem mitglieferten Editor des Betriebssystems (Notepad für Windows, etc.) zu editieren ... hat dann der Benutzer den Aufwand, den man als Entwickler gehabt hätte.

Da stellt sich dann wieder die Frage, ähnlich der Evaluierung zwischen ActiveX und einem Executale: Was ist besser ... das eine oder das andere?

Und ich würde die z.B über eine Datei oder parametrisierbaren Aufruf konfigurierbare Variante vorziehen :D.

Letztendlich ist es aber Dein Code ;), hier kann Dir nur ein jeder seine eigenen Ideen, Kritiken, Anmerkungen und Zustimmungen geben. Was Du letztendlich daraus machst, bleibt wie immer nicht uns überlassen *g*.
Antworten