Je dois exécuter un script simple une fois les modules et les programmes installés. J'ai un peu de difficulté à trouver de la documentation simple sur la façon de procéder. Il semble que je doive hériter de distutils.command.install, remplacer certaines méthodes et ajouter cet objet au script d'installation. Les détails sont toutefois un peu flous et il semble que beaucoup d’efforts soient nécessaires pour un crochet aussi simple. Est-ce que quelqu'un sait un moyen facile de faire cela?
Réponses
Trop de publicités?OK, je l'ai compris. L'idée est essentiellement d'étendre l'une des commandes distutils et d'écraser la méthode d'exécution. Pour indiquer à distutils d'utiliser la nouvelle classe, vous pouvez utiliser la variable cmdclass.
from distutils.core import setup
from distutils.command.install_data import install_data
class post_install(install_data):
def run(self):
# Call parent
install_data.run(self)
# Execute commands
print "Running"
setup(name="example",
cmdclass={"install_data": post_install},
...
)
J'espère que cela aidera quelqu'un d'autre.
Je ne pouvais pas faire fonctionner la réponse de Joe Wreschnig et peaufiner sa réponse de la même manière qu’à l’extension de la documentation distutils. Je suis venu avec ce code qui fonctionne bien sur ma machine.
from distutils import core
from distutils.command.install import install
...
class my_install(install):
def run(self):
install.run(self)
# Custom stuff here
# distutils.command.install actually has some nice helper methods
# and interfaces. I strongly suggest reading the docstrings.
...
distutils.core.setup(..., cmdclass={'install': my_install})
Remarque: je n'ai pas modifié la réponse de Joe car je ne sais pas pourquoi sa réponse ne fonctionnait pas sur ma machine.
J'ai une erreur quand j'ai essayé la accepté de répondre ici (peut-être parce que je suis en utilisant la version 2.6 de Python dans ce cas particulier, pas sûr). Cela s'est produit pour les setup.py installer " et "pip install":
sudo python setup.py install
échoue avec l' erreur: erreur dans l'installation.cfg: commande 'my_install' a pas une telle option 'single_version_externally_managed'
ET
sudo pip install . -U
échec de plus avec beaucoup de détails mais aussi avec d'erreur: option --single-version-gérés en externe n'est pas reconnu
Variation sur la accepté de répondre à
Remplacer les importations en provenance de distutils avec setuptools résolu le problème pour moi:
from setuptools import setup
from setuptools.command.install import install