Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5905

Re: [Python-de] Re: Funktion ueberschreiben?

From "Peter J. Holzer" <hjp-usenet3@hjp.at>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Re: Funktion ueberschreiben?
Date 2022-12-04 14:46 +0100
Organization LUGA
Message-ID <slrntop96d.15lbp.hjp-usenet3@trintignant.hjp.at> (permalink)
References (4 earlier) <tmfv45$a1a$1@news2.informatik.uni-stuttgart.de> <slrntonpdo.13t6p.hjp-usenet3@trintignant.hjp.at> <tmhr2q$b5c$1@news2.informatik.uni-stuttgart.de> <slrntop5ri.15dl6.hjp-usenet3@trintignant.hjp.at> <tmi67a$bbs$1@news2.informatik.uni-stuttgart.de>

Show all headers | View raw


On 2022-12-04 13:10, Ulli Horlacher <framstag@rus.uni-stuttgart.de> wrote:
> Peter J. Holzer <hjp-usenet3@hjp.at> wrote:
>
>>> Via environment Variable PERLLIB, analog zu LD_LIBRARY_PATH.
>> 
>> Beides beeinflusst nur, wo Libraries gesucht werden.
>
> Genau das reicht doch: es soll meine modifizierte time Library gefunden
> und dann zur Laufzeit geladen werden.

Vielleicht, aber das war nicht Deine Frage.

>> Aber time zu ersetzen scheint mir sowieso keine zielführende Taktik zu
>> sein. Asctime ist ja nicht die einzige Funktion aus diesem Modul, die
>> verwendet wird. Wie ersetzt Du den Rest?
>
> Gar nicht. Die bleibt gleich.
> Ich wollte time.py kopieren und da drin nur time.asctime() modifizieren.
> Da es das aber gar nicht als eigenes library-file gibt, ist diese Idee nicht
> umsetzbar. Sackgasse.
>
>
>> Wenn Du ein Modul ersetzen willst, dann eher duplicity.dup_time.
>
> Da stecken halt noch viel mehr Funktionen drin.

12 Funktionen und eine Klasse. Das Modul »time« hat ungefähr das
Doppelte. Und ein guter Teil davon ist notwendigerweise in C
geschrieben. Das scheint mir jedenfalls deutlich komplexer zu sein, als
das ziemlich übersichtliche dup_time.

> Wenn es nun ein Ubuntu-Update davon gibt, kann es zu
> Inkompatibiltaeten kommen.

Für das hypothetische python.py gilt das genauso.

> 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. Aber die Stelle, wo das trivial möglich
wäre, willst Du ja nicht angreifen.

(Was für mich auch eher schleierhaft macht. wie du da ein Wrapper-Script
unterbringen willst: Würden nicht alle Argumente, die gegen eine
Modifikation des Originalscripts sprechen auch gegen ein Wrapper-Script
sprechen? Bzw. Wie stellst Du sicher, dass das Wrapper-Script aufgerufen
wird, wenn es woanders liegt?)

> Dann wuerde ich das original duplicity.dup_time laden und dann
> timetopretty() neu definieren. Kann ich dazu PYTHONPATH verwenden?

Nicht direkt. Wie in meinem vorigen Posting beschrieben, vielleicht
indirekt, aber das ist mindestens so fragil.

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!


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

        hp

Back to de.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Funktion ueberschreiben? Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2022-12-03 08:28 +0000
  [Python-de] Re: Funktion ueberschreiben? Mike Müller <mmueller@python-academy.de> - 2022-12-03 10:00 +0100
    [Python-de] Re: Funktion ueberschreiben? Mike Müller <mmueller@python-academy.de> - 2022-12-03 13:49 +0100
    Re: [Python-de] Re: Funktion ueberschreiben? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-03 14:27 +0100
    Re: [Python-de] Re: Funktion ueberschreiben? Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2022-12-03 15:46 +0000
      [Python-de] Re: Funktion ueberschreiben? Christopher Arndt <chris@chrisarndt.de> - 2022-12-03 16:57 +0100
        Re: [Python-de] Re: Funktion ueberschreiben? Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2022-12-03 16:56 +0000
          Re: [Python-de] Re: Funktion ueberschreiben? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-04 01:11 +0100
            Re: [Python-de] Re: Funktion ueberschreiben? Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2022-12-04 09:59 +0000
              Re: [Python-de] Re: Funktion ueberschreiben? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-04 13:49 +0100
                Re: [Python-de] Re: Funktion ueberschreiben? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-04 14:06 +0100
                Re: [Python-de] Re: Funktion ueberschreiben? Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2022-12-04 13:10 +0000
                Re: [Python-de] Re: Funktion ueberschreiben? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-04 14:46 +0100
                Re: [Python-de] Re: Funktion ueberschreiben? Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2022-12-04 14:41 +0000
                Re: [Python-de] Re: Funktion ueberschreiben? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-04 22:07 +0100
                Re: [Python-de] Re: Funktion ueberschreiben? Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2022-12-05 08:07 +0000
                Re: [Python-de] Re: Funktion ueberschreiben? Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2022-12-05 08:24 +0000
      Re: [Python-de] Re: Funktion ueberschreiben? "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> - 2022-12-05 08:59 +0000

csiph-web