¿Cómo puedo agregar scripts posteriores a la instalación a easy_install / setuptools / distutils?

Me gustaría poder agregar un enlace a mi setup.py que se ejecutará después de la instalación (ya sea cuando sea fácil de instalar o al hacer la instalación de python setup.py).

En mi proyecto, PySmell , tengo algunos archivos de soporte para Vim y Emacs. Cuando un usuario instala PySmell de la forma habitual, estos archivos se copian en el huevo real, y el usuario tiene que extraerlos y colocarlos en sus directorios .vim o .emacs. Lo que quiero es preguntar al usuario, después de la instalación, dónde le gustaría copiar estos archivos, o simplemente un mensaje imprimiendo la ubicación de los archivos y qué debería hacer con ellos.

¿Cuál es la mejor manera de hacer esto?

Gracias

Mi setup.py se ve así:

#!/usr/bin/env python # -*- coding: UTF-8 -*- from setuptools import setup version = __import__('pysmell.pysmell').pysmell.__version__ setup( name='pysmell', version = version, description = 'An autocompletion library for Python', author = 'Orestis Markou', author_email = 'orestis@orestis.gr', packages = ['pysmell'], entry_points = { 'console_scripts': [ 'pysmell = pysmell.pysmell:main' ] }, data_files = [ ('vim', ['pysmell.vim']), ('emacs', ['pysmell.el']), ], include_package_data = True, keywords = 'vim autocomplete', url = 'http://code.google.com/p/pysmell', long_description = """\ PySmell is a python IDE completion helper. It tries to statically analyze Python source code, without executing it, and generates information about a project's structure that IDE tools can use. The first target is Vim, because that's what I'm using and because its completion mechanism is very straightforward, but it's not limited to it. """, classifiers = [ 'Development Status :: 5 - Production/Stable', 'Environment :: Console', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Topic :: Software Development', 'Topic :: Utilities', 'Topic :: Text Editors', ] ) 

EDITAR:

Aquí hay un código auxiliar que muestra la instalación de python setup.py install :

 from setuptools.command.install import install as _install class install(_install): def run(self): _install.run(self) print post_install_message setup( cmdclass={'install': install}, ... 

No hay suerte con la ruta easy_install todavía.

Depende de cómo el usuario instale su paquete. Si el usuario realmente ejecuta “setup.py install”, es bastante fácil: simplemente agregue otro subcomando al comando de instalación (por ejemplo, install_vim), cuyo método run () copiará los archivos que desee en los lugares donde lo desee. Puede agregar su subcomando a install.sub_commands y pasar el comando a setup ().

Si desea una secuencia de comandos posterior a la instalación en un binario, depende del tipo de binario que está creando. Por ejemplo, bdist_rpm, bdist_wininst y bdist_msi tienen soporte para los scripts posteriores a la instalación, porque los formatos de embalaje subyacentes son compatibles con los scripts posteriores a la instalación.

bdist_egg no admite un mecanismo posterior a la instalación por diseño:

http://bugs.python.org/setuptools/issue41

Como solución alternativa, puede establecer la opción zip_ok en falso para que su proyecto se instale como un directorio descomprimido, de modo que será más fácil para los usuarios encontrar el archivo de configuración del editor.

En distutils2, será posible instalar elementos en más directorios, incluidos los directorios personalizados, y tener enlaces previos / posteriores a la instalación / eliminar.