10
votes

Utilisez Distribute / SeugurTools pour créer Symlink (ou exécuter un script)?

Dans le cadre du processus de configuration de mon projet, j'ai besoin de symboliser l'un des packages à un répertoire spécifié afin qu'un script init.d peut le trouver. Y a-t-il un moyen d'ajouter cela comme une commande de post-traitement à configuration () code>? Je me contenterais même de créer un autre fichier qui crée le lien et de le transmettre à configuration () code> dans le cadre d'une liste KWARG de "Exécuter ces" (si une telle option existe).

setup(
    ...
    packages = find_packages('src'),
    package_dir = {'': 'src'},
    install_requires = ...,
    data_files = [('/etc/init.d', ['scripts/foo'])],
    ...
)


0 commentaires

3 Réponses :


4
votes

Actuellement, seuls les outils de gestion des packages spécifiques à la plate-forme (E.G. RPM, Deb, Win32 Installateurs) ont la possibilité d'exécuter des étapes post-installations: les distunes, les sechools, etc. Ne supportez pas cela directement. (Sauf dans l'étendue de vous permettre de construire le RPM, l'installateur Windows, etc.)

Ainsi, le moyen le plus simple de faire cela sans un programme d'installation spécifique à la plate-forme, consiste à créer un script postinstall à votre propre ou à ajouter une option postinstall à un script existant de la vôtre et dites aux utilisateurs. pour l'exécuter. Sinon, vous devrez utiliser BDIST_RPM ou l'une des autres commandes BDist pour créer un programme d'installation pour la ou les plate-forme appropriées.


0 commentaires

0
votes

En développant la réponse de @ Pjeby, vous pouvez également étendre la commande d'installation pour ajouter vos propres étapes postinstall. Cependant, cela ne fonctionnera que lors de l'installation à partir de la source (i.e. exécutant setup.py) et d'autres installateurs tels que RPM et MSI ignorera silencieusement vos modifications.

EDIT : Trouvé cela après une google, il semble que vous devriez pas Essayez de créer vous-même les symboles vous-même: http://docs.python.org/2/install/index.html#alternate-Installation


0 commentaires

9
votes

Je sais que ce message est de plusieurs années, mais je voulais fournir une mise à jour du code post-traitement possible dans setup.py. Longue histoire courte, vous devez remplacer la fonction d'installation de SeugoTools, mais à partir de là, vous pouvez ajouter tout le code souhaité, tel que la copie de symboles qui manifestent.in refuse de copier. Pris de Peter Lamut's solution .

from setuptools.command.install import install

class CustomInstallCommand(install):
    """Customized setuptools install command - prints a friendly greeting."""
    def run(self):
        print "Hello, developer, how are you? :)"
        install.run(self)
        #post-processing code
setup(
    ...
    cmdclass={
        'install': CustomInstallCommand,
    },
    ...
)


1 commentaires

Hélio Guilherme m'a notifié que le lien vers mon poteau de blog était mort. J'ai édité votre message pour faire le lien en vie à nouveau. Je suis content que vous ayez trouvé cela utile, BTW.