Wie kann ich Post-Installations-Skripts zu easy_install / setuptools / distutils hinzufügen?

Ich würde gerne in der Lage sein, einen Haken zu meinem setup.py hinzuzufügen, der nach der Installation ausgeführt wird (entweder wenn easy_install'ing oder wenn python setup.py installieren).

In meinem Projekt, PySmell , habe ich einige Support-Dateien für Vim und Emacs. Wenn ein Benutzer PySmell die übliche Weise installiert, werden diese Dateien in das eigentliche Ei kopiert, und der Benutzer muss sie fischen und sie in seine .vim- oder .emacs-Verzeichnisse legen. Was ich will, fragt entweder den Benutzer, nach der Installation, wo würde er diese Dateien kopieren lassen, oder auch nur eine Nachricht, die den Speicherort der Dateien druckt und was soll er mit ihnen machen?

Was ist der beste Weg, dies zu tun?

Vielen 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 = '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', ] ) 

BEARBEITEN:

Hier ist ein Stub, der die 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}, ... 

Kein Glück mit der easy_install Route noch.

2 Solutions collect form web for “Wie kann ich Post-Installations-Skripts zu easy_install / setuptools / distutils hinzufügen?”

Es hängt davon ab, wie der Benutzer Ihr Paket installiert. Wenn der Benutzer tatsächlich "setup.py install" ausführt, ist es ziemlich einfach: Füge einfach einen weiteren Unterbefehl zum Installationsbefehl hinzu (zB install_vim), dessen run () – Methode die gewünschten Dateien an den Orten kopiert, an denen du sie wünschst. Sie können Ihren Unterbefehl zu install.sub_commands hinzufügen und den Befehl in setup () übergeben.

Wenn Sie ein Post-Install-Skript in einer Binärdatei wollen, hängt es von der Art der Binärdatei, die Sie erstellen. Zum Beispiel haben bdist_rpm, bdist_wininst und bdist_msi Unterstützung für Post-Installations-Scripts, da die zugrunde liegenden Packungsformate Post-Installations-Scripts unterstützen.

Bdist_egg unterstützt keinen Nachinstallationsmechanismus durch Design:

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

Als Work-around können Sie die Option zip_ok auf false setzen, so dass Ihr Projekt als ein unzipped-Verzeichnis installiert wird, dann wird es ein wenig einfacher für Ihre Benutzer, die Editor-Konfigurationsdatei zu finden.

In distutils2 wird es möglich sein, Dinge in mehr Verzeichnisse zu installieren, einschließlich benutzerdefinierter Verzeichnisse, und Vor- / Nachinstallation / Entfernen von Hooks.

  • Ändern Sie den Standard-Distordordner mit setuptools
  • Python: einfaches Beispiel für ein Python-Ei mit einer Ein-Datei-Quelldatei?
  • Wie kann ich setuptools ein Paket installieren, das nicht auf PyPI ist?
  • Python: Wie man eine Verbindung zu einem geschützten svn-Repository mit setuptools herstellt
  • Pip ignoriert dependency_links in setup.py
  • Wie benutzt man setuptools, um in einem benutzerdefinierten Verzeichnis zu installieren?
  • Python setuptools und easy_install numpy Frage
  • Programmatische Erkennung von System-Proxy-Einstellungen unter Windows XP mit Python
  • Python-Paketstruktur, setup.py für laufende Unit-Tests
  • Python ex_setup.py urlopen Fehler [Errno 11004] getaddrinfo fehlgeschlagen
  • Einschließlich .gitignore im Setup? - Fehler: existiert nicht oder nicht eine reguläre Datei
  • Python ist die beste Programmiersprache der Welt.