python मैं easy_install/setuptools/distutils में पोस्ट-इंस्टॉल स्क्रिप्ट कैसे जोड़ सकता हूं?




(2)

मैं अपने setup.py पर एक हुक जोड़ने में सक्षम होना चाहूंगा जो कि पोस्ट-इंस्टॉल (या तो जब easy_install'ing या python setup.py स्थापना करते समय) चलाया जाएगा।

मेरी परियोजना में, PySmell , मेरे पास विम और एमैक्स के लिए कुछ समर्थन फ़ाइलें हैं I जब कोई उपयोगकर्ता सामान्य तरीके से PySmell स्थापित करता है, तो इन फ़ाइलों को वास्तविक अंडा में कॉपी किया जाता है, और उपयोगकर्ता को उन्हें बाहर निकालना होगा और उन्हें अपने .im या .emacs निर्देशिका में रखें। मैं क्या चाहता हूं, या तो उपयोगकर्ता से पूछता हूं, पोस्ट-इंस्टॉलेशन, वह इन फ़ाइलों की प्रतिलिपि कैसे चाहेंगे, या यहां तक ​​कि सिर्फ एक संदेश फाइलों के स्थान को छापने और उन्हें उनके साथ क्या करना चाहिए।

इसे करने का बेहतरीन तरीका क्या है?

धन्यवाद

मेरा setup.py ऐसा दिखता है:

#!/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',
    ]


)

संपादित करें:

यहां स्टब है जो 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},
    ...

अभी तक easy_install मार्ग के साथ कोई भाग्य नहीं है


यह इस बात पर निर्भर करता है कि उपयोगकर्ता आपके पैकेज कैसे स्थापित करता है। यदि उपयोगकर्ता वास्तव में "setup.py install" चलाता है, तो यह काफी आसान है: बस स्थापित कमांड (कहते हैं, install_vim) में एक अन्य उप-आदेश जोड़ें, जिसका रन () विधि उन फ़ाइलों की प्रतिलिपि बनाई जाएगी, जहां आप चाहते हैं उन जगहों पर। आप अपने subcommand को install.sub_commands में जोड़ सकते हैं, और सेटअप में आदेश पास कर सकते हैं ()।

यदि आप बाइनरी में एक पोस्ट-इंस्टॉल स्क्रिप्ट चाहते हैं, तो यह आपके द्वारा बनाए जा रहे बाइनरी प्रकार पर निर्भर करता है। उदाहरण के लिए, bdist_rpm, bdist_wininst, और bdist_msi पोस्ट-इंस्टॉल स्क्रिप्ट के लिए समर्थन करते हैं, क्योंकि अंतर्निहित पैकिंग स्वरूप पोस्ट-इंस्टॉल स्क्रिप्ट का समर्थन करते हैं।

bdist_egg डिजाइन द्वारा पोस्ट-इंस्टॉल तंत्र का समर्थन नहीं करता है:

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


काम के आसपास के रूप में, आप zip_ok विकल्प को गलत पर सेट कर सकते हैं ताकि आपका प्रोजेक्ट अनझिप किए गए डायरेक्टरी के रूप में स्थापित हो, तो यह आपके उपयोगकर्ताओं के लिए संपादक कॉन्फ़िग फाइल को खोजने में आसान होगा।

Distutils2 में, कस्टम निर्देशिकाओं सहित अधिक निर्देशिकाओं में चीजों को स्थापित करना और हुकों को पूर्व / पोस्ट-इंस्टॉल / निकालने के लिए संभव है





distutils