Frage

würde Ich mag Lage sein, einen Haken zu meinem setup.py hinzufügen, die ausgeführt werden sollen nach der Installation (entweder wenn easy_install'ing oder wenn python setup.py install tun).

In meinem Projekt PySmell , habe ich einige Support-Dateien für Emacs. Wenn ein Benutzer PySmell die übliche Art und Weise installiert, lassen sich diese Dateien im aktuellen Ei kopiert, und der Benutzer hat sie zu fischen und sie in seine .vim oder Emacs-Verzeichnisse. Was ich will, ist entweder zu fragen die Benutzer, die nach der Installation, wo er würde wie diese Dateien kopiert, oder auch nur eine Meldung Druck den Speicherort der Dateien und was er mit ihnen machen.

Was ist der beste Weg, dies zu tun?

Danke

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


)

EDIT:

Hier ist ein Stummel, 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 der easy_install Route vor.

War es hilfreich?

Lösung

Es hängt davon ab, wie der Benutzer installiert das Paket. Wenn der Benutzer tatsächlich läuft „setup.py install“, ist es ziemlich einfach: Just another subcommand auf den Befehl installieren hinzufügen (sagen wir, install_vim), dessen run () -Methode werden die Dateien kopieren Sie in den Orten wollen, wo Sie wollen. Sie können Ihre subcommand zu install.sub_commands, und übergeben Sie den Befehl in Setup () hinzufügen.

Wenn Sie ein Post-Installationsskript in einem binären, hängt es von der Art der binären Sie erstellen. Zum Beispiel bdist_rpm, bdist_wininst und bdist_msi haben Unterstützung für Skripte nach der Installation, da die zugrunde liegenden Packungsformate unterstützen Skripte nach der Installation.

bdist_egg unterstützt keine Post-Installationsmechanismus von Design:

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

Andere Tipps

Als Behelfslösung können Sie die zip_ok Option auf false gesetzt könnten, so dass Ihr Projekt als entpackten Verzeichnis installiert ist, dann wird es ein wenig einfacher für die Benutzer, die Editor-Konfigurationsdatei zu finden.

In distutils2, wird es möglich sein, Dinge zu mehr Verzeichnisse zu installieren, einschließlich benutzerdefinierten Verzeichnissen und haben pre / post-install / entfernen Haken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top