setup.py: callback nach installation?

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.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab nach eine Möglichkeit gesucht, nach dem installieren code auszuführen. Mein Ziel: Nach dem installieren (in ein virtualenv) möchte ich gern starter für linux bzw. Verknüpfung für Windows erstellen... (Ins root vom virtualenv)

Meine bisherige Lösung sieht so aus:

Code: Alles auswählen

from setuptools.command.develop import develop
from setuptools.command.install import install

#...


def after_install_callback(bin_dir):
    """
    :param bin_dir: e.g.: /home/<username>/DjangoForRunnersEnv/bin

    Note: print outputs can only be seen in "--verbose" mode!
    """
    print("\nafter_install_callback()", file=sys.stderr)

    print("*** script_dir:", bin_dir)


class CustomInstallCommand(install):
    """
    e.g.: ./setup.py install --verbose
    """

    def run(self):
        super().run()
        after_install_callback(self.install_scripts)


class CustomDevelopCommand(develop):
    """
    e.g.: pip install --verbose -e .
    """
    def run(self):
        super().run()
        after_install_callback(self.script_dir)


setup(
    #...
    cmdclass={
        'install': CustomInstallCommand,  # normal install e.g.: ./setup.py install
        'develop': CustomDevelopCommand,  # setuptools "develop mode" e.g.: pip install -e .
    },
    #...
)
Jemand eine bessere Idee?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich benutze console scripts entry points: https://python-packaging.readthedocs.io ... ntry-point
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Die werden aber nicht nach der installation ausgeführt, sondern packen nur script dateien ausführbar ins "bin" bzw. "Script" Verzeichnis.

Ich möchte code direkt bei der installation ausführen ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

So wie ich dich verstanden habe, wolltest du Code ausführen um Skripte zu erzeugen. Wenn das nicht dein Ziel war, was dann?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ja, nur der code soll *bei* der Installation direkt ausgeführt werden. Nicht manuell *nach* der Installation ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wird er doch. Also, nach der Installation hast du Konsole-Skripte. Oder verstehe ich immer noch nicht was du meinst?
Benutzeravatar
__blackjack__
User
Beiträge: 12984
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Diese Skripte die man nach der Installation hat sollen *während* der Installation schon aufgerufen/ausgeführt werden. Also zum Beispiel ein Update/Migrationsskript das installiert und dann auch gleich ausgeführt wird. So habe ich das jedenfalls verstanden.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ahhhh. Da helfen die natürlich nicht.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Du hast es erfasst BlackJack ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten