IOError: file() constructor not accessible in restricted mode

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
anonym44

Hallo,

ich hab webpy miy Cython in eine so Datei konvertiert und bekomme folgende Fehlermeldung wärend der Laufzeit:

IOError: file() constructor not accessible in restricted mode
Die betroffene Codezeile ist:

Code: Alles auswählen

                return Template(open(path).read(), filename=path, **self._keywords)		<-- Fehler
Ich habe den Code nach

Code: Alles auswählen

                data=""
                file=open(path, "r")		<-- Fehler
                if file:
                    data=file.read()
                    file.close()
                    return Template(data, filename=path, **self._keywords)

Hat jemand eine Idee woran das liegt?
BlackJack

@Amerika_befreie_uns: Du, beziehungsweise webpy, hat es geschafft Python in den „restricted mode“ zu versetzen. Das war mal Bestandteil des Versuchs Python in eine „Sandbox“ zu sperren, mit den Modulen `rexec` und `Bastion` als API. Die beiden Module sind beide mit Python 2.3 aus der Standardbibliothek geflogen, weil immer wieder neue Möglichkeiten gefunden wurden aus dem Sandkasten auszubrechen. Den Modus gibt es aber immer noch und der wird automatisch aktiviert wenn das Wörterbuch mit den eingebauten Namen nicht mit dem originalen Wörterbuch des Interpreters identisch ist: https://docs.python.org/2.7/library/restricted.html

Was ist denn der Sinn davon das `webpy` zu einer nativen Bibliothek zu kompilieren? Einen signifikanten Geschwindigkeitsvorteil würde ich da nicht erwarten.
anonym44

Okay danke für deine Info!
Ich werde also von Python2.7 nach Python3 portieren müssen.

Nachdem ich web mit Cython zu einer dll umwandle ist alles 60% schneller.
BlackJack

@Amerika_befreie_uns: *Real* 60% oder in einem nichtrepräsentativen Minisetting wo alle anderen Faktoren wie Netzwerk, Datenbank, usw. keine Rolle spielen? Der Code vom Webrahmenwerk ist ja üblicherweise nicht der Flaschenhals.
Antworten