Script "includen"?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

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?
Gromit
User
Beiträge: 51
Registriert: Montag 8. Mai 2006, 19:07

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

Das geht $GOTT sei Dank gar nicht.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

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).
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

ja, und wie kann ich andere Dateien (in denen dann die Funktionen sind) einbinden?

Danke!
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

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.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Danke...
Jona
User
Beiträge: 94
Registriert: Sonntag 23. September 2007, 23:25

da gibt es ja doch noch ein paar dinge zu beachten wie PYTHONPATH und __init__.py ...
hat da jemand ein zusammenfassung zur hand?
Zuletzt geändert von Jona am Dienstag 20. November 2007, 19:48, insgesamt 2-mal geändert.
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

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
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

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!
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
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

ja, das war ja nur ein beispiel, an dem liegts nicht...

er spuckt mir folgendes aus:

ImportError: No module named modul_xy
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Ok, wo liegt denn Dein Modul relativ zur Datei, die importiert?
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

wie oben gesagt im selben Verzeichnis...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Was steht in `sys.path` drinnen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

was meinst du mit "steht drin"?
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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...
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

....

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...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Der erste Eintrag (soll das eine Regular Expression sein?) und dass '.', also der aktuelle Ordner nicht drin ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten