easy_install easy python setuptools distutils

python - install easy_install ubuntu



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

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 los 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 archivo binario, depende del tipo de archivo binario que esté creando. Por ejemplo, bdist_rpm, bdist_wininst y bdist_msi tienen soporte para scripts posteriores a la instalación, ya que los formatos de empaquetamiento subyacentes admiten scripts posteriores a la instalación.

bdist_egg no es compatible con un mecanismo posterior a la instalación por diseño:

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

Me gustaría poder agregar un gancho a mi setup.py que se ejecutará después de la instalación (ya sea al instalar easy_installing o al realizar 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 manera habitual, estos archivos se copian en el huevo real, y el usuario debe pescarlos 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 que se copiaran estos archivos, o incluso solo un mensaje que imprima 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 = ''[email protected]'', 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 resguardo que demuestra 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}, ...

Todavía no hay suerte con la ruta easy_install.


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

En distutils2, será posible instalar cosas en más directorios, incluidos los personalizados, y tener ganchos pre / post-install / remove.