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

StackOverflow https://stackoverflow.com/questions/250038

  •  05-07-2019
  •  | 
  •  

Pregunta

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 talón que muestra el setup.py setup de python :

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},
    ...

Aún no hay suerte con la ruta de instalación fácil.

¿Fue útil?

Solución

Depende de cómo el usuario instala su paquete. Si el usuario realmente ejecuta " setup.py install " Puede agregar su subcomando a install.sub_commands y pasar el comando a la configuración ().

Si desea un script 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 son compatibles con 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

Otros consejos

Como solución alternativa, puede configurar la opción zip_ok en falso para que su proyecto se instale como un directorio descomprimido, para que los usuarios encuentren el archivo de configuración del editor con más facilidad.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top