Ich möchte in der Lage sein, einen Haken zu meiner setup.py hinzufügen, die nach der Installation ausgeführt werden (entweder wenn easy_install'ing oder wenn Python setup.py installieren).Wie kann ich Nachinstallations-Skripte zu easy_install/setuptools/distutils hinzufügen?
In meinem Projekt, PySmell, habe ich einige Support-Dateien 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 stellen. Ich möchte den Benutzer fragen, nach der Installation, wohin diese Dateien kopiert werden sollen, oder einfach nur eine Nachricht, die den Speicherort der Dateien ausgibt und was er damit machen soll.
Was ist der beste Weg, dies zu tun?
Dank
Mein 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',
]
)
EDIT:
hier ein Stub ist, die die python setup.py install
zeigt:
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},
...
Kein Glück mit dem easy_install Route noch.
Ich habe gerade herausgefunden, dass das Aufrufen von 'setuptools.install.install: run()' explizit 'install_requires' Setup-Argument nicht auflöst und es scheint, dass es auf andere Weise funktioniert, wenn Sie das tun – astronaut
@ Astronaut verwenden 'do_egg_install', wie hier beschrieben: http://stackoverflow.com/questions/21915469/python-setuptools-install-requires-is-ignored-when-overriding-cmdclass –