python setup.py - как показать сообщение после установки

Я разрабатываю приложение PyQt5 и делаю его доступным через pip install теперь этот pip в python3 может установить pyqt5 как зависимость. Я сделал точку входа для запуска своего пакета и сказал setup.py, что это gui_scripts.

Что я хотел бы сделать сейчас, после того, как человек печатает pip install package, и установка завершена, отобразите сообщение для человека, говорящего о том, что теперь вы можете набрать package в терминале загрузить приложение. Как правильно это сделать? Или я не должен этого делать?

1 ответ

Setup.py - это почти обычный скрипт на Python. Просто используйте print() Функция в конце вашего файла setup.py. В этом примере файловой структурой является 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)

Другой вариант - модуль журналирования.

Например, rasterio использует такой подход, который вы можете адаптировать к своим потребностям:

import logging
import sys

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

...

log.info("Your message")

sys.stderr будет напечатан пипсом.

Другие вопросы по тегам