当前位置: 首页 > 面试题库 >

如何将安装后脚本添加到easy_install / setuptools / distutils?

杜砚
2023-03-14
问题内容

我希望能够将钩子添加到将在安装后运行的setup.py中(在easy_install’ing或执行python setup.py安装时)。

在我的项目PySmell中,我有一些针对Vim和Emacs的支持文件。当用户以通常的方式安装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
install”,则相当简单:只需在安装命令中添加另一个子命令(例如install_vim),该子命令的run()方法将在所需位置复制所需文件。您可以将子命令添加到install.sub_commands,然后将该命令传递到setup()中。

如果要使用二进制文件安装后脚本,则取决于要创建的二进制文件类型。例如,bdist_rpm,bdist_wininst和bdist_msi支持安装后脚本,因为基础打包格式支持安装后脚本

bdist_egg在设计上不支持安装后机制

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



 类似资料:
  • 问题内容: 我正在尝试向Pythondistutils添加安装后任务,如如何使用简单的安装后脚本扩展distutils中所述。。该任务应该 在已安装的lib目录中 执行Python脚本。该脚本生成安装的软件包所需的其他Python模块。 我的第一次尝试如下: 这种方法有效,但是据我所知有两个缺陷: 如果用户使用的Python解释器不是从中选择的,则将使用 其他 解释器执行安装后脚本,这可能会引起问

  • 我很喜欢这个从http://www.jqueryscript.net/time-clock/modern-circular-jquery-countdown-timer-plugin-final-countdown.html下载的倒计时脚本,想把它用到我的wordpress网站上,我读了一些关于如何在wordpress中放入任何脚本的教程,但是我不能完全理解,因为我是新手,你能帮我一步一步地做吗

  • 我在我的php docker配置上安装yaml支持时遇到问题。这是我的dockerbuild文件: 但我有个错误: 我在google上搜索过,但还没有找到有效的解决方案。我该怎么做? 注: 尚未工作,收到消息:无法找到程序包libyaml 而且这个命令也没有起作用: 错误:

  • 本文向大家介绍python在Windows下安装setuptools(easy_install工具)步骤详解,包括了python在Windows下安装setuptools(easy_install工具)步骤详解的使用技巧和注意事项,需要的朋友参考一下 本文讲述了python在Windows下安装setuptools(easy_install工具)的方法。分享给大家供大家参考,具体如下: 【题外话介

  • 问题内容: 如何为自己的脚本制作setup.py文件?我必须将脚本全局化。(将其添加到/ usr / bin),因此我可以从控制台运行它,只需键入:scriptName参数。操作系统:Linux。 编辑: 现在我的脚本是可安装的,但是我如何使其全局?这样我就可以从控制台运行它,而只需输入名称。 问题答案: 编辑:此答案仅涉及将可执行脚本安装到中。我假设您具有文件工作原理的基本知识。 创建脚本并将其

  • 问题内容: 我想在Linux PATH中添加一个小脚本,因此不必在实际放置在磁盘上的地方实际运行它。 该脚本非常简单,它是关于通过代理赋予apt-get访问权限的,我使它像这样: 然后,我将其保存为apt-proxy.sh,将其设置为+ x(chmod),当我位于该文件所在的目录中时,一切正常。 我的问题是:如何将此 apt-proxy 添加到 PATH, 以便实际上可以将其称为真正的apt-ge