Seite 1 von 2

Script "includen"?

Verfasst: Dienstag 20. November 2007, 14:24
von nemomuk
Hallo,

wie kann ich in Python ein Script wie bspweise in PHP includen?

Bsp.:

def qwe():
efergerg
include...

Sodass dann auch die Einrückung stimmt? Oder geht das gar nicht?

Eher nicht

Verfasst: Dienstag 20. November 2007, 14:34
von Gromit
Das ist nicht mit Python-Board-Mitteln möglich.
Am nächsten kommt dem die von execfile. Siehe auch:
http://docs.python.org/lib/built-in-funcs.html

HTH,
Gerald

PS: Python sieht zwar oberflächlich wie eine Script-Sprache aus, ist aber eher eine (sehr) dynamische Allzwecksprache mti der man auch Skripte schreiben kann.

Verfasst: Dienstag 20. November 2007, 14:36
von BlackJack
Das geht $GOTT sei Dank gar nicht.

Verfasst: Dienstag 20. November 2007, 14:40
von keppla
Um mal das "gott sei dank" etwas auszuführen:

Warum möchtest du so inkluden?
Wenn du eine Funktionalität kapseln willst, nutze funktionen, die du dann in anderen Dateien "aufbewahrst".

Es dürfte eigentlich keinen echten Grund geben, so zu programmieren (sagt ein unfreiwilliger PHP-Benutzer, der weiß, in was für murks diese Includes ausarten können).

Verfasst: Dienstag 20. November 2007, 14:46
von Y0Gi
Weiterer Code liegt in weiteren Python-Modulen vor, die importiert werden. Textuelle Inhalte lassen sich über Template-Engines einbinden oder einfach aus Dateien über Standardmittel einlesen.

Verfasst: Dienstag 20. November 2007, 15:10
von nemomuk
ja, und wie kann ich andere Dateien (in denen dann die Funktionen sind) einbinden?

Danke!

Verfasst: Dienstag 20. November 2007, 15:27
von keppla
SchneiderWeisse hat geschrieben:ja, und wie kann ich andere Dateien (in denen dann die Funktionen sind) einbinden?
Danke!
das machst du mit "import". Das funktioniert allerdings nicht so wie bei PHP als eine Textersetzung, sondern macht nur die Namen verfügbar.

Code: Alles auswählen

# datei meinmodul.py
def func():
  print "hello world"

Code: Alles auswählen

# datei main.py
import meinmodul
meinmodul.func()
oder:

Code: Alles auswählen

# explizit die funktion importieren
from meinmodul import func
func()
Wie man sieht, hat man so ganz nebenbei auch die Namespaces, die PHP erst in der nächsten Version bekommen soll ;)

Zum Thema importe/module/packages solltest du dir vielleicht das Tutorial nochmal durchgucken, das ist recht grundlegender Krams.

Verfasst: Dienstag 20. November 2007, 16:01
von nemomuk
Danke...

Verfasst: Dienstag 20. November 2007, 16:21
von Jona
da gibt es ja doch noch ein paar dinge zu beachten wie PYTHONPATH und __init__.py ...
hat da jemand ein zusammenfassung zur hand?

Verfasst: Dienstag 20. November 2007, 16:26
von Redprince
Jona hat geschrieben:da gibt es ja doch noch ein paar dinge zu beachten wie PYTHONPATH und __ini__.py ...
hat da jemand ein zusammenfassung zu zur hand?
http://docs.python.org/tut/node8.html

Verfasst: Dienstag 20. November 2007, 20:55
von nemomuk
also, das ist ja weiter nicht schwierig, nur leider macht das mein mod_python nicht..., leigt das am mod_python oder mach ich was falsch?

Code: Alles auswählen


#!/usr/bin/python


#---Import---
import cgi
import time
import MySQLdb
import modul_xy


modul_xy.py im gleichen Verzeichnis:

Code: Alles auswählen

def xy:
    wefgerg
Danke!

Verfasst: Dienstag 20. November 2007, 21:09
von BlackJack
Könnte am Syntaxfehler liegen:

Code: Alles auswählen

In [94]: def xy:
------------------------------------------------------------
   File "<ipython console>", line 1
     def xy:
           ^
<type 'exceptions.SyntaxError'>: invalid syntax

Verfasst: Dienstag 20. November 2007, 21:23
von nemomuk
ja, das war ja nur ein beispiel, an dem liegts nicht...

er spuckt mir folgendes aus:

ImportError: No module named modul_xy

Verfasst: Dienstag 20. November 2007, 21:56
von CM
Ok, wo liegt denn Dein Modul relativ zur Datei, die importiert?

Verfasst: Dienstag 20. November 2007, 22:26
von nemomuk
wie oben gesagt im selben Verzeichnis...

Verfasst: Dienstag 20. November 2007, 22:37
von Leonidas
Was steht in `sys.path` drinnen?

Verfasst: Dienstag 20. November 2007, 22:43
von nemomuk
was meinst du mit "steht drin"?

Verfasst: Dienstag 20. November 2007, 22:47
von BlackVivi

Code: Alles auswählen

In [1]: import sys

In [2]: print sys.path
Out[2]:
['',
 'C:\\Python25\\Scripts',
 'C:\\Python25\\lib\\site-packages\\pylons-0.9.5-py2.5.egg',
  ...]
oO?...

Ich denke, irgendwas stimmt mit dem Dateinamen nicht, oder mit dem Ausführen des Scripts... oder sowas...

Verfasst: Mittwoch 21. November 2007, 07:32
von nemomuk
....

Code: Alles auswählen

[
'(\\.py$)/', 
'/usr/lib/python24.zip', 
'/usr/lib/python2.4',
'/usr/lib/python2.4/plat-linux2', 
'/usr/lib/python2.4/lib-tk', 
'/usr/lib/python2.4/lib-dynload', 
'/usr/lib/python2.4/site-packages'
]
Was kann da flasch sein?

Danke...

Verfasst: Mittwoch 21. November 2007, 10:23
von Leonidas
Der erste Eintrag (soll das eine Regular Expression sein?) und dass '.', also der aktuelle Ordner nicht drin ist.