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.py
、somedir/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模块,如何安装python模块,常用安装方式