python setup.py - 如何在安装后显示消息

Posted

技术标签:

【中文标题】python setup.py - 如何在安装后显示消息【英文标题】:python setup.py - how to show message after install 【发布时间】:2016-12-20 09:05:58 【问题描述】:

我正在开发一个 PyQt5 应用程序并通过 pip install 提供它,现在 python3 中的 pip 可以安装 pyqt5 作为依赖项。我创建了一个入口点来启动我的包,并告诉 setup.py 它是一个 gui_scripts。

我现在想做的是,在用户输入pip install package 并且安装完成后,向用户显示一条消息,告诉您现在可以在终端中输入package 以加载应用程序。这样做的正确方法是什么?还是我不应该这样做?

【问题讨论】:

***.com/q/20288711/1005215 【参考方案1】:

如果你能保证

始终从源代码分发包安装软件包,而不是二进制轮,并且 用户将-v 选项用于pip install

您可以在 setup.py 脚本中输出文本。

setup.py 几乎是一个普通的 Python 脚本。 只需在 setup.py 文件末尾使用 print() 函数即可。 在本例中,文件结构为somedir/setup.pysomedir/test/test/__init__.py

简单的解决方案

from setuptools import setup

print("Started!")

setup(name='testing',
      version='0.1',
      description='The simplest setup in the world',
      classifiers=[
        'Development Status :: 3 - Alpha',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 3.0',
      ],
      keywords='setup',
      author='someone',
      author_email='someone@example.com',
      license='MIT',
      packages=['test'],
      entry_points=
      ,
      zip_safe=False)

print("Finished!")

开始了! 运行安装 运行 bdist_egg 运行 egg_info 编写 testing.egg-info/PKG-INFO ... ... ... 测试的处理依赖==0.1 完成处理 测试依赖项==0.1 完成!

使用setuptools.command.install解决方案

此外,您可以将setuptools.command.install 命令子类化。在全新设置中更改install.run(self)os.system("cat testing.egg-info/PKG-INFO") 的顺序时检查差异。

from setuptools import setup
from setuptools.command.install import install
import os


class PostInstallCommand(install):
    """Post-installation for installation mode."""
    def run(self):
        install.run(self)
        os.system("cat testing.egg-info/PKG-INFO")


setup(name='testing',
      version='0.1',
      description='The simplest setup in the world',
      classifiers=[
        'Development Status :: 3 - Alpha',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 3.0',
      ],
      keywords='setup',
      author='someone',
      author_email='someone@example.com',
      license='MIT',
      packages=['test'],
      entry_points=
      ,
      cmdclass=
        'install': PostInstallCommand,
      ,
      zip_safe=False)

【讨论】:

令人讨厌的是,pip 会吞噬这些自定义消息,除非您使用 -v 或类似的方式运行它。任务有效,但您看不到消息。 另外,我还没有找到一种方法来使用 pip 安装轮进行这项工作。它们不会在安装时“运行”setup.py - 仅在打包到 .whl 时。【参考方案2】:

另一个选项是日志模块。

rasterio 例如使用这样的方法,您可以根据自己的需要进行调整:

import logging
import sys

logging.basicConfig(stream=sys.stderr, level=logging.INFO)
log = logging.getLogger()

...

log.info("Your message")

sys.stderr 将被 pip 打印出来。

【讨论】:

以上是关于python setup.py - 如何在安装后显示消息的主要内容,如果未能解决你的问题,请参考以下文章

python中的模块通过setup.py怎么安装

怎么安装python模块,如何安装python模块,常用安装方式

如何使用和制作 Python 安装模块

python setup.py install 出错

python setup.py bdist_wheel 报错的处理办法

如何卸载使用“python setup.py develop”安装的 Python 站点包?