Seite 1 von 1

setup.py: callback nach installation?

Verfasst: Samstag 15. September 2018, 11:04
von jens
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?

Re: setup.py: callback nach installation?

Verfasst: Samstag 15. September 2018, 11:19
von __deets__
Ich benutze console scripts entry points: https://python-packaging.readthedocs.io ... ntry-point

Re: setup.py: callback nach installation?

Verfasst: Samstag 15. September 2018, 21:26
von jens
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 ;)

Re: setup.py: callback nach installation?

Verfasst: Samstag 15. September 2018, 21:43
von __deets__
So wie ich dich verstanden habe, wolltest du Code ausführen um Skripte zu erzeugen. Wenn das nicht dein Ziel war, was dann?

Re: setup.py: callback nach installation?

Verfasst: Dienstag 18. September 2018, 11:47
von jens
Ja, nur der code soll *bei* der Installation direkt ausgeführt werden. Nicht manuell *nach* der Installation ;)

Re: setup.py: callback nach installation?

Verfasst: Dienstag 18. September 2018, 12:16
von __deets__
Wird er doch. Also, nach der Installation hast du Konsole-Skripte. Oder verstehe ich immer noch nicht was du meinst?

Re: setup.py: callback nach installation?

Verfasst: Dienstag 18. September 2018, 12:33
von __blackjack__
@__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.

Re: setup.py: callback nach installation?

Verfasst: Dienstag 18. September 2018, 12:46
von __deets__
Ahhhh. Da helfen die natürlich nicht.

Re: setup.py: callback nach installation?

Verfasst: Dienstag 18. September 2018, 13:57
von jens
Du hast es erfasst BlackJack ;)