[Python-de] Probleme mit execfile() und import's...

jens diemer python-de-mailinglist at jensdiemer.de
Mit Sep 14 12:35:31 CEST 2005


Da das Problem von 
http://www.python-forum.de/viewtopic.php?p=23534#23534 ehr ein 
allgemeines mit execfile() ist, will ich es hier nochmal Schildern:

test.py
"""
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import test2

print "Content-type: text/html; charset=utf-8\r\n"
print "test2.test:", test2.test
"""


test2.py
"""
#!/usr/bin/python
# -*- coding: UTF-8 -*-

test = "1"
"""


test3.py
"""
#!/usr/bin/python
# -*- coding: UTF-8 -*-

while 1:
     execfile( "test.py" )
     raw_input( "weiter..." )
"""


So, also man ruft test3.py auf... Es wird test.py ausgeführt, welches 
die Variable aus test2.py anzeigt. Soweit so gut.
Nun gehen wir hin und ändern die Variable in test2.py auf einen anderen 
Wert (während die while-Schleife noch läuft!)... Drücken dann ENTER und 
sehen, das sie anscheinend noch nicht geändert wurde!


Als ersten Work-a-Round, ich nutzte kein execfile() sondern führe per 
subprocess den Python-Interpreter aus:

test3.py
"""
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys, subprocess

while 1:
     process = subprocess.Popen(
             "%s %s" % ( sys.executable, "test.py" ),
             cwd     = ".",
             shell   = True,
             stdout  = subprocess.PIPE,
             stderr  = subprocess.STDOUT
         )
     while 1:
         line = process.stdout.readline()
         if line == "": break
         print line

     raw_input( "weiter..." )
"""


Etwas aufwendig, aber es geht... Doch wie geht's einfacher?


-- 
Mfg.

Jens Diemer


----
http://www.jensdiemer.de