Hallo liebe leute, ich schreibe seit einiger Zeit Programme in php, z.b. meine Homepage. und habe nun einige Fragen zu python, im besonderen zur funktion import. in php gibt es ja include und require, wo jeweils der gesamte pfad mit angegeben wird. nun habe ich bei meiner hp ein kleines aufbauschema gebastelt. user ruft auf : index.php, in dieser wird zuerst die header.php, danach die index.inc.php und dann die footer.php included. die 3 dateien befinden sich alle in unterordnern. nun stellt sich mir die frage, wie ich an die überhaupt dran komme, habe nämlich keine möglichkeit gesehen, wie man dateien in unterordnern "importieren" kann. mfg Light Lan
Rauch Pauli schrieb:
Hallo liebe leute,
ich schreibe seit einiger Zeit Programme in php, z.b. meine Homepage. und habe nun einige Fragen zu python, im besonderen zur funktion import. in php gibt es ja include und require, wo jeweils der gesamte pfad mit angegeben wird. nun habe ich bei meiner hp ein kleines aufbauschema gebastelt.
user ruft auf : index.php, in dieser wird zuerst die header.php, danach die index.inc.php und dann die footer.php included. die 3 dateien befinden sich alle in unterordnern.
nun stellt sich mir die frage, wie ich an die überhaupt dran komme, habe nämlich keine möglichkeit gesehen, wie man dateien in unterordnern "importieren" kann. Du kannst in Python die Unterverzeichnisse zum Suchpfad hinzufügen.
import sys sys.path.append("/pfad/zu/deinem/unterverzeichnis") Danach kannst du die Module ganz normal mit import importieren. Gruß Marcus ___________________________________________________________ Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de
Rauch Pauli schrieb:
Hallo liebe leute,
ich schreibe seit einiger Zeit Programme in php, z.b. meine Homepage. und habe nun einige Fragen zu python, im besonderen zur funktion import. in php gibt es ja include und require, wo jeweils der gesamte pfad mit angegeben wird. nun habe ich bei meiner hp ein kleines aufbauschema gebastelt.
user ruft auf : index.php, in dieser wird zuerst die header.php, danach die index.inc.php und dann die footer.php included. die 3 dateien befinden sich alle in unterordnern.
Was du hier willst, ist nicht "import"* sondern ein Template-System (das evtl. auch eingebetteten Python-Code zulässt). Anscheinend verwendest du ja auch schon irgendein Template-System, jedenfalls lässt das dein Source-Code, den die Anderen aus deinen Mails** zitieren, schließen (wahrscheinlich mod-python?). Jedes vernünftige Template-System hat eine Include-Funktion oder etwas Gleichwertiges. Diese solltest du in diesem Fall benutzen. Import verwendet man, um Variable, Funktionen und Klassen einzulesen, die man nachfolgend im Programm verwenden will, nicht, um irgendwelche Text oder HTML-Schnippsel (Header. Footer, etc) an der Stelle der Import-Anweisung einzufügen. Chris * import ist übrigens eine Anweisung und keine Funktion ** Manche finden es unhöflich, wenn man auf Antworten an die Liste privat an den Autor zurückschreibt, ohne dass das dazu begründete Veranlassung besteht.
Christopher Arndt schrieb:
Rauch Pauli schrieb:
Hallo liebe leute,
ich schreibe seit einiger Zeit Programme in php, z.b. meine Homepage. und habe nun einige Fragen zu python, im besonderen zur funktion import. in php gibt es ja include und require, wo jeweils der gesamte pfad mit angegeben wird. nun habe ich bei meiner hp ein kleines aufbauschema gebastelt.
user ruft auf : index.php, in dieser wird zuerst die header.php, danach die index.inc.php und dann die footer.php included. die 3 dateien befinden sich alle in unterordnern.
Was du hier willst, ist nicht "import"* sondern ein Template-System (das evtl. auch eingebetteten Python-Code zulässt).
Anscheinend verwendest du ja auch schon irgendein Template-System, jedenfalls lässt das dein Source-Code, den die Anderen aus deinen Mails** zitieren, schließen (wahrscheinlich mod-python?).
Jedes vernünftige Template-System hat eine Include-Funktion oder etwas Gleichwertiges. Diese solltest du in diesem Fall benutzen. Import verwendet man, um Variable, Funktionen und Klassen einzulesen, die man nachfolgend im Programm verwenden will, nicht, um irgendwelche Text oder HTML-Schnippsel (Header. Footer, etc) an der Stelle der Import-Anweisung einzufügen.
Chris
* import ist übrigens eine Anweisung und keine Funktion
** Manche finden es unhöflich, wenn man auf Antworten an die Liste privat an den Autor zurückschreibt, ohne dass das dazu begründete Veranlassung besteht. Hallo Chris, ups, entschuldige. ich verwende das erste mal eine mailingliste, sonst immer foren und mit dem klick auf antworten schicke ich das wohl nur ihm und nich an die liste :(
in php verwende ich das easy templatesystem. habe mich auch bei python schon etwas umgesehen nach templateengines und Cheetah schein gut zu sein. und ich scheine im moment mehrere probleme zu haben. sollten wohl mal der reihe vom schwerwiegendsten ausgehen. ich habe mod_python installiert und möchte darüber dann den python-code ausführen, so dass der besuche ne htmlseite bekommt, was aber noch nicht ganz einwandfrei geht, muss ich mir nochmal genauer ansehn. im header baue ich die verbindung zur datenbank auf, initialisiere verschiedene klassen(datenbank, templateengine, etc) im footer wird der ganze text ausgegeben, der im hauptteil definiert wird. also header und footer sind bei mir nicht nur teile der html ausgabe ;) mfg Light Lan hier mal die "fehlenden" mails *duck* -------------------------- erstmal danke für die info marcus
import sys sys.path.append('/srv/www/htdocs/hp-py/includes/') import header.inc Traceback (most recent call last): File "<stdin>", line 1, in ? ImportError: No module named header.inc
in dem ordner includes ist das file header.inc.py sollte also eigentlich gehen... der will anscheinend ein modul und keine datei, wie jetzt? mfg Light Lan ----------------------- ah verstehe, die fkt hat nach dem modul header, welches ein modul inc hat, gesucht. das hat halbwegs geholfen. wenn ich nun in der pythonshell den programmcode eingebe geht alles in ordnung. aber wenn ich das über meinen webserver aurufe(apache 2.0 mit mod_python) bekomme ich nur einen 500 internal server error :( <% import sys sys.path.append("./includes/") sys.path.append("./includes/pages/") import header_inc,index_inc,footer_inc %> header und footer befinden sich in ./includes, index in ./includes/pages die dateien sind noch leer. mfg Light Lan ------------------------- schade, aber danke für deine hilfe, die importhilfe im wiki ist wirklich nützlich. dadurch könnte ich das durchaus hinkriegen, aber jetzt geh ich erstmal ins bett. evtl meldet sich ja derweil einer, der davon mehr ahnung hat als wir beide ;) mfg Light Lan
Rauch Pauli schrieb:
das hat halbwegs geholfen. wenn ich nun in der pythonshell den programmcode eingebe geht alles in ordnung. aber wenn ich das über meinen webserver aurufe(apache 2.0 mit mod_python) bekomme ich nur einen 500 internal server error :(
<% import sys sys.path.append("./includes/") sys.path.append("./includes/pages/") import header_inc,index_inc,footer_inc %>
header und footer befinden sich in ./includes, index in ./includes/pages die dateien sind noch leer.
[...] dadurch könnte ich das durchaus hinkriegen, aber jetzt geh ich erstmal ins bett.
Na, ausgeschlafen? :-) Ich kenne mod_python nicht, aber was sagt denn das errorlog des Apache? Eventuell darf nobody, daemon oder wer auch immer die Module nicht lesen. Ralf Schoenian
Ralf Schönian schrieb:
Rauch Pauli schrieb:
das hat halbwegs geholfen. wenn ich nun in der pythonshell den programmcode eingebe geht alles in ordnung. aber wenn ich das über meinen webserver aurufe(apache 2.0 mit mod_python) bekomme ich nur einen 500 internal server error :(
<% import sys sys.path.append("./includes/") sys.path.append("./includes/pages/") import header_inc,index_inc,footer_inc %>
header und footer befinden sich in ./includes, index in ./includes/pages die dateien sind noch leer.
[...] dadurch könnte ich das durchaus hinkriegen, aber jetzt geh ich erstmal ins bett.
Na, ausgeschlafen? :-) Ich kenne mod_python nicht, aber was sagt denn das errorlog des Apache? Eventuell darf nobody, daemon oder wer auch immer die Module nicht lesen.
Ralf Schoenian
[Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: Traceback (most recent call last): [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch\n result = object(req) [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: File "/usr/lib/python2.4/site-packages/mod_python/psp.py", line 297, in handler\n p.run() [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: File "/usr/lib/python2.4/site-packages/mod_python/psp.py", line 208, in run\n exec code in global_scope [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: File "/srv/www/htdocs/hp-py/index.py", line 5, in ?\n import header_inc,index_inc,footer_inc [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: ImportError: No module named header_inc da hab ich wohl noch einiges zu tun.. mfg Light Lan
Rauch Pauli schrieb:
[Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: Traceback (most recent call last): [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch\n result = object(req) [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: File "/usr/lib/python2.4/site-packages/mod_python/psp.py", line 297, in handler\n p.run() [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: File "/usr/lib/python2.4/site-packages/mod_python/psp.py", line 208, in run\n exec code in global_scope [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: File "/srv/www/htdocs/hp-py/index.py", line 5, in ?\n import header_inc,index_inc,footer_inc [Wed Dec 20 06:40:42 2006] [error] [client 192.168.0.57] PythonHandler mod_python.psp: ImportError: No module named header_inc
Versuch doch einmal dem Apache-Häuptling den Pfad zu Deinem Modul beizubringen: SetEnv PATH /srv/www/htdocs/hp-py/includes:$PATH Danach den Apache neu starten. Ralf
participants (4)
-
Christopher Arndt -
Marcus Habermehl (BMH1980) -
Ralf Schönian -
Rauch Pauli