Seite 1 von 1

Tkinter.py Problem bei Installation eines Programms,Errorno2

Verfasst: Donnerstag 24. August 2006, 01:06
von DocNoob
Hallo,
ich bin so richtig frisch mit Python in Berührung gekommen und wollte gerade ein Programm unter Suse Linux installieren. Das zugehörige Shell Skript zur Installation ruft nun einige Python Befehle auf, um die Installation durchzuführen.
Bevor aber irgendetwas installiert wird, kommt im Terminal folgende Fehlermeldung:

brain@localhost:/media/SYBYL_7_2_CD1> sh install.sh
Copying install files...
Copying python files...
Unzipping python files...
Exception in Tkinter callback
Traceback (most recent call last):
File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/lib-tk/Tkinter.py", line 1285, in __call__
return apply(self.func, args)
File "/usr/tmp/TA_INSTALL5177/installDlg.py", line 376, in doInstall
self.install()
File "/usr/tmp/TA_INSTALL5177/installDlg.py", line 600, in install
self.installIt(x)
File "/usr/tmp/TA_INSTALL5177/installDlg.py", line 710, in installIt
self.installItHere(product, self.taroot, self.plats)
File "/usr/tmp/TA_INSTALL5177/installDlg.py", line 798, in installItHere
os.execl(tmpDir+"gztar.sh","gztar.sh",cdname)
File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/os.py", line 259, in execl
execv(file, args)
OSError: [Errno 2] No such file or directory



Da ich recht neu in der Python-Materie bin hab ich leider gar keine Ahnung, worauf sich die Meldung "No such file or directory" bezieht. Ist das auf das Tkinter.py selbst oder auf eine der darunter angegebenen Dateien ?
Weiterhin (ich bin mir nicht sicher ob es wichtig ist, nur der Vollständigkeit halber) ist auf meinem Rechner eigentlich Python 2.4.3 installiert, das Programm bringt jetzt aber sein eigenes Python 2.1 mit. Wie gesagt, ich weiß nicht ob das Probleme gibt, wollte es der Vollständigkeit halber nur erwähnen. Darüber hinaus hab ich mal testweise versucht die Tkinter.py in das oben angegebene Verzeichnis zu kopieren (nachdem ich es selber angelegt habe), was aber nicht zum Erfolg geführt hat.

Wenn mir jemand Tips geben könnte worauf sich die Fehlermeldung genau bezieht bzw. was evtl. zur Problemlösung führen könnte wäre ich Euch echt dankbar !

Mit freundlichen Grüßen,
ein totaler Python-Neuling :)

Re: Tkinter.py Problem bei Installation eines Programms,Erro

Verfasst: Donnerstag 24. August 2006, 08:10
von BlackJack
DocNoob hat geschrieben:

Code: Alles auswählen

File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/os.py", line 259, in execl
    execv(file, args)
OSError: [Errno 2] No such file or directory


Da ich recht neu in der Python-Materie bin hab ich leider gar keine Ahnung, worauf sich die Meldung "No such file or directory" bezieht. Ist das auf das Tkinter.py selbst oder auf eine der darunter angegebenen Dateien ?
Diese letzte(n) Zeile(n) weisen auf die Stelle die letztendlich zum Programmabbruch führen. `file` scheint einen Pfad zu einem Programm zu enthalten, das es nicht gibt.

Code: Alles auswählen

In [6]: os.execv('gibtsnich', [])
---------------------------------------------------------------------------
exceptions.OSError              Traceback (most recent call last)

/home/marc/<ipython console>

OSError: [Errno 2] No such file or directory
Offenbar ist das Programm `gztar.sh` im Temporären Verzeichnis!?

Ansonsten kannst Du in der Datei vor das `execl()` mal ein ``print file`` einfügen und nachschauen was dort genau aufgerufen werden soll.

Verfasst: Sonntag 27. August 2006, 13:59
von DocNoob
Huhu,
danke für die schnelle Antwort !
In welcher Datei meinst du, dass ich da einen print Befehl einfügen soll ? In der os.oy oder in der, die os.py aufruft (Das wäre dann ja installDlg.py, wenn ich das richtig interpretiere ?). Sorry, aber ich bin wie gesagt ein totaler Python-Neuling. Ich hab das mal probeweise in zwei getrennten Läufen in beide Dateien eingefügt, aber ich bekomme jetzt nur ein print file in der Fehlermeldung angezeigt. Ich bin mir auch nicht sicher ob ich das richtig eingefügt hab... wenn jemand mal schauen könnte wäre ich sehr dankbar ! Im übrigen legt die Installation wirklich eine Datein "gztar.sh" im temporären Installationsverzeichnis an. Wenn ich nun wissen würde, warum der die nicht findet, wäre ich ein großes Stück weiter. Kann das vielleicht daran liegen, dass in meinem /usr Verzeichnis nur ein Link liegt namens "tmp", die eigentlichen Dateien aber unter /var/TA_INSTALL.... liegen ? Ich weiss ja nicht ob Python mit sowas umgehen kann...

Hier die eingefügten Zeilen in den beiden Dateien:

Nummer1: Code von os.py geändert

Fehlermeldung:
Copying install files...
Copying python files...
Unzipping python files...
Exception in Tkinter callback
Traceback (most recent call last):
File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/lib-tk/Tkinter.py", line 1285, in __call__
return apply(self.func, args)
File "/usr/tmp/TA_INSTALL4996/installDlg.py", line 376, in doInstall
self.install()
File "/usr/tmp/TA_INSTALL4996/installDlg.py", line 600, in install
self.installIt(x)
File "/usr/tmp/TA_INSTALL4996/installDlg.py", line 710, in installIt
self.installItHere(product, self.taroot, self.plats)
File "/usr/tmp/TA_INSTALL4996/installDlg.py", line 798, in installItHere
os.execl(tmpDir+"gztar.sh","gztar.sh",cdname)
File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/os.py", line 259, in execl
print file
OSError: [Errno 2] No such file or directory



Code dazu:

Code: Alles auswählen

def execl(file, *args):
    """execl(file, *args)

    Execute the executable file with argument list args, replacing the
    current process. """
    print file              <------------  (das hab ich eingefügt!)
    execv(file, args)

def execle(file, *args):
    """execle(file, *args, env)

    Execute the executable file with argument list args and
    environment env, replacing the current process. """
    env = args[-1]
    execve(file, args[:-1], env)



Nummer2: install.Dlg.py geändert

Fehlermeldung:
Copying install files...
Copying python files...
Unzipping python files...
Exception in Tkinter callback
Traceback (most recent call last):
File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/
lib-tk/Tkinter.py", line 1285, in __call__
return apply(self.func, args)
File "/usr/tmp/TA_INSTALL4627/installDlg.py", line 376, in doInstall
self.install()
File "/usr/tmp/TA_INSTALL4627/installDlg.py", line 600, in install
self.installIt(x)
File "/usr/tmp/TA_INSTALL4627/installDlg.py", line 710, in installIt
self.installItHere(product, self.taroot, self.plats)
File "/usr/tmp/TA_INSTALL4627/installDlg.py", line 798, in installItHere
print file
File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/
os.py", line 259, in execl
execv(file, args)
OSError: [Errno 2] No such file or directory


Code dazu:

Code: Alles auswählen

def installItHere(self, product, dir, platforms):

      if (self.cancelled.get() == 1):
         return

      self.kw["cd"].set(os.path.abspath(self.kw["cd"].get())+"/")

      if os.environ.has_key("INST_TMP"):
         tmpDir = os.environ["INST_TMP"] + "/"
      else:
         tmpDir = os.getcwd() + "/"

      if (self.kw.has_key("flagged")):
         if (self.kw["flagged"].count(product)):
            if (platforms.count("_all")):
               platforms.remove("_all")

      # Save the old dir to go back to afterwards
      olddir = os.getcwd()
      os.chdir(dir)

      self.log.write("Installing " + product + "\n")
      self.log.flush()

      for x in self.kw["tars"][product]:
         for y in platforms:

            name = x + y + ".tar.gz"
            cdname = self.kw["cd"].get() + name

            if (os.access(cdname, os.F_OK)):
               if (self.cancelled.get() == 0):

		  if (self.prodtars[product].count(name)):
                     self.prodtars[product].remove(name)

                  self.tarpid = os.fork()
                  if not (self.tarpid):
                     #print "  In the child: Name = %s"%cdname
                     print file                 <-------------------------------(eingefügt !)
                     os.execl(tmpDir+"gztar.sh","gztar.sh",cdname)
                     os._exit(0)
                  else:
                     #print "Child process is: %i"%self.tarpid
                     os.waitpid(self.tarpid, 0)

      os.chdir(olddir)

Und da ja gztar.sh einfach wohl so als String angegeben wird, hab ich auch mal anstelle des print file ein print tmpDir in die installDlg.py an die gleich Stelle gesetzt, aber da bekomme ich nur:

Copying install files...
Copying python files...
Unzipping python files...
Exception in Tkinter callback
Traceback (most recent call last):
File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/
lib-tk/Tkinter.py", line 1285, in __call__
return apply(self.func, args)
File "/usr/tmp/TA_INSTALL4627/installDlg.py", line 376, in doInstall
self.install()
File "/usr/tmp/TA_INSTALL4627/installDlg.py", line 600, in install
self.installIt(x)
File "/usr/tmp/TA_INSTALL4627/installDlg.py", line 710, in installIt
self.installItHere(product, self.taroot, self.plats)
File "/usr/tmp/TA_INSTALL4627/installDlg.py", line 798, in installItHere
print tmpDir
File "/dsw/testing/pbondi/scratch/sybuny70_wh/cd1a/linux_python/lib/python2.1/
os.py", line 259, in execl
execv(file, args)
OSError: [Errno 2] No such file or directory


Hab ich da bei dem Einfügen was falsch gemacht ?

Gruß,
DocNoob