[Python-de] Re: Funktion ueberschreiben?
Ulli Horlacher <[email protected]> Sun, 4 Dec 2022 14:41:05 +0000 (UTC)
| Newsgroups | gmane.comp.python.general.german |
|---|---|
| Organization | University of Stuttgart, FRG |
| Message-ID | <[email protected]> |
Peter J. Holzer <[email protected]> wrote: >> Genau das reicht doch: es soll meine modifizierte time Library gefunden >> und dann zur Laufzeit geladen werden. > > Vielleicht, aber das war nicht Deine Frage. Meine Frage war mehrteilig, inklusive der nach Alternativloesungen :-) >> In Perl kann man folgendes machen: Ein Modul laden und danach nur eine >> Funktion nachtraeglich ersetzen. Geht so was auch mit Python? > > Ja, wurde ja schon erklärt. Nicht konkret genug. Im duplicity source code steht an mehreren Stellen: from duplicity import dup_time Angenommen mein modifiziertes dup_time.py liegt in /opt/duply/lib/dup_time.py Was muss dann in $PYTHONPATH stehen, damit das geladen wird. Und was muss ich in /opt/duply/lib/dup_time.py schreiben um /usr/lib/python3/dist-packages/duplicity/dup_time.py zu laden? > (Was für mich auch eher schleierhaft macht. wie du da ein Wrapper-Script > unterbringen willst Trivial: das steht irgendwo in $PATH weiter vorne. So was hab ich schon oft gemacht bei anderen Sprachen. > Wenn Du ein *anderes* Script aufrufen kannst, ist es wahrscheinlich am > einfachsten, das Originalscript mittels exec aufzurufen: > > % cat foo > #!/usr/bin/python3 > > import time > > timeinseconds = time.time() > print(time.asctime(time.localtime(timeinseconds))) > % ./foo > Sun Dec 4 14:39:06 2022 > % cat foo_wrapper > #!/usr/bin/python3 > > import time > > def my_asctime(tm): > return "Gotcha!" > > time.asctime = my_asctime > > with open("foo") as f: > code = f.read() > exec(code) > % ./foo_wrapper > Gotcha! "foo" waere dann "/usr/bin/duplicity" ? Aber da steht doch drin: import time was mir meine grad modifizierte time.asctime() Funktion wieder ueberschreibt? >>> Wenn mich das Datumsformat ausreichend stören würde, würde ich das >>> Debian-Paket patchen (ich gehe mal davon aus, dass Du das auf mehr als >>> einem System haben willst). Das ist wahrscheinlich am einfachsten und >>> saubersten. >> >> Nicht machbar. Die Zielsysteme koennen auch Redhat sein und ich hab da >> auch keine root-Rechte. > > Was mich wieder zu der Frage zurückführt, wie Du da ein Wrapper-Script > installieren willst. $HOME/bin, /var/tmp/bin, etc -- Ullrich Horlacher Server und Virtualisierung Rechenzentrum TIK Universitaet Stuttgart E-Mail: [email protected] Allmandring 30a Tel: ++49-711-68565868 70569 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/ _______________________________________________ python-de Mailingliste -- [email protected] Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an [email protected] https://mail.python.org/mailman3/lists/python-de.python.org/ Mitgliedsadresse: [email protected]