IOError: file() constructor not accessible in restricted mode

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Amerika_befreie_uns
User
Beiträge: 27
Registriert: Sonntag 15. November 2015, 08:28

IOError: file() constructor not accessible in restricted mode

Beitragvon Amerika_befreie_uns » Freitag 30. Dezember 2016, 09:43

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

Re: IOError: file() constructor not accessible in restricted mode

Beitragvon BlackJack » Freitag 30. Dezember 2016, 16:32

@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.
Amerika_befreie_uns
User
Beiträge: 27
Registriert: Sonntag 15. November 2015, 08:28

Re: IOError: file() constructor not accessible in restricted mode

Beitragvon Amerika_befreie_uns » Freitag 30. Dezember 2016, 22:56

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

Re: IOError: file() constructor not accessible in restricted mode

Beitragvon BlackJack » Freitag 30. Dezember 2016, 23:34

@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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder