كيف يمكنني إضافة بعد تثبيت البرامج النصية لeasy_install / setuptools / distutils؟

StackOverflow https://stackoverflow.com/questions/250038

  •  05-07-2019
  •  | 
  •  

سؤال

وأود أن تكون قادرة على إضافة هوك لsetup.py بلدي التي سوف يتم تشغيلها بعد تثبيت (إما عند easy_install'ing أو عند القيام بيثون setup.py تثبيت).

في مشروعي، PySmell ، ولدي بعض ملفات دعم لفيم وايماكس. عندما يقوم مستخدم بتثبيت PySmell بالطريقة المعتادة، والحصول على نسخ هذه الملفات في البيض الفعلي، والمستخدم لديه لصيد السمك بها ووضعها في كتابه .vim أو .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 = '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',
    ]


)

وتحرير:

وهنا كعب مما يدل على 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 تثبيت"، فإنه من السهل إلى حد ما: فقط إضافة subcommand آخر لتثبيت الأوامر (مثلا، install_vim)، التي تديرها طريقة () ونسخ الملفات التي تريد في الأماكن التي تريد لها. يمكنك إضافة subcommand لinstall.sub_commands، وتمرير الأمر إلى الإعداد ().

إذا كنت ترغب في مرحلة ما بعد تثبيت البرنامج النصي في ثنائي، وذلك يعتمد على نوع ثنائي تقوم بإنشائها. على سبيل المثال، bdist_rpm، bdist_wininst، وbdist_msi يكون الدعم لمرحلة ما بعد تثبيت البرامج النصية، لأن صيغ التعبئة الأساسية تدعم مشاركة تثبيت البرامج النصية.

وbdist_egg لا يدعم تثبيت بعد الآلية التي تصميم:

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

نصائح أخرى

وكما عمل حول، هل يمكن تعيين الخيار zip_ok إلى false بحيث يتم تثبيت المشروع باعتباره دليل محلول، بعد ذلك سوف يكون أسهل قليلا ليتمكن المستخدمون من العثور على الملف محرر التكوين.

في distutils2، سيكون من الممكن لتثبيت الأمور إلى المزيد من الدلائل، بما في ذلك الدلائل العرف، وأن يكون ما قبل / ما بعد تثبيت / إزالة السنانير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top