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

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

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


person eri0o    schedule 13.08.2016    source источник
comment
stackoverflow.com/q/20288711/1005215   -  person Nehal J Wani    schedule 13.08.2016


Ответы (2)


Если вы можете гарантировать, что

  • пакет всегда устанавливается из исходного кода, а не из бинарного диска, и
  • пользователь использует опцию -v для pip install,

вы можете вывести текст в свой setup.py скрипт.

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='[email protected]',
      license='MIT',
      packages=['test'],
      entry_points={
      },
      zip_safe=False)

print("Finished!")

Начал!
выполняется install
выполняется 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='[email protected]',
      license='MIT',
      packages=['test'],
      entry_points={
      },
      cmdclass={
        'install': PostInstallCommand,
      },
      zip_safe=False)
person Jose Raul Barreras    schedule 13.08.2016
comment
Достаточно досадно, что pip поглощает эти пользовательские сообщения, если вы не запустите его с помощью -v или чего-то подобного. Задачи работают, но вы просто не видите сообщений. - person Marakai; 03.02.2017
comment
Также я не нашел способа заставить эту работу работать с колесами для установки пипов. Они не запускаются setup.py при установке - только при упаковке в .whl. - person JCGB; 04.03.2019

Другим вариантом может быть модуль ведения журнала.

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

import logging
import sys

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

...

log.info("Your message")

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

person bugmenot123    schedule 19.07.2019