Wie kann ich easy_install / setuptools / distutils Post-Install-Skripte hinzufügen?
Ich möchte meinem setup.py einen Hook hinzufügen können, der nach der Installation ausgeführt wird (entweder bei der Installation von easy_install oder bei der Installation von python setup.py).
In meinem ProjektPySmellIch habe einige Unterstützungsdateien für Vim und Emacs. Wenn ein Benutzer PySmell auf die übliche Weise installiert, werden diese Dateien in das eigentliche Ei kopiert, und der Benutzer muss sie herausfischen und in seine .vim- oder .emacs-Verzeichnisse legen. Ich möchte, dass der Benutzer nach der Installation gefragt wird, wo diese Dateien kopiert werden sollen, oder auch nur eine Meldung, in der der Speicherort der Dateien ausgedruckt wird, und was er mit ihnen tun soll.
Wie geht das am besten?
Vielen Dank
Meine setup.py sieht so aus:
#!/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',
]
)
BEARBEITEN:
Ist hier ein Stummel, der das demonstriertpython 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},
...
Noch kein Glück mit der easy_install-Route.