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'])],
...
)
3 Réponses :
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.) P>
Ainsi, le moyen le plus simple de faire cela sans em> 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. P>
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. Strike> P>
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, }, ... )
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.