Pip Post-install Скрипт Интерактивный ввод?

Я очень плохо знаком с пакетом Python и пытаюсь сделать pip-совместимый сценарий установки и постустановки для моего пакета для коллег. Цель сценария после установки состоит в том, чтобы создать файл конфигурации, который будет настроен для конечного пользователя и его системы, и, хотя я думаю, что я мог бы просто запустить второй сценарий установки после установки, кажется, что имеет больше смысла для меня просто иметь скрипт setup.py и связанные с ним пост-установочные вещи.

Проблема заключается в том, что при использовании пакета с простой установкой или удалением архива python setup.py install работает нормально, пипа не будет. Я думаю, что это может быть связано с тем, что pip препятствует взаимодействию с stdout и stdin, основываясь на этом обсуждении 2015 года, но я не уверен, так ли это, или я просто делаю это неправильно. Даже если я использую -vvv с pip install Я все еще не получаю вывод или интерактивность из моего сценария post-install.py.

Кто-нибудь знает хороший обходной путь для получения сценария после установки для интерактивного запуска с pip? Скрипт постинсталляции немного длинный, поэтому я не буду публиковать его здесь, но вот мой скрипт setup.py на случай, если мне понадобится обработать его отсюда:

import sys, os
from setuptools import setup
from setuptools.command.install import install as _install
from subprocess import call

import my_package

def _post_install(dir):
    call([sys.executable, 'postinstall.py'])


class install(_install):
    def run(self):
        _install.do_egg_install(self)
        self.execute(_post_install, (self.install_lib,), msg="Running post install task")

def readme():
    with open('README.rst') as fh:
        return fh.read()

config = {
    'name'                   : 'my_package',
    'description'            : ('My Package'),
    'long_description'       : readme(),
    'version'                : my_package.__version__,
    'author'                 : 'My Name',
    'author_email'           : 'my.email@email.com',
    'download_url'           : 'https://download.link.com',
    'test_suite'             : 'nose.collector',
    'tests_require'          : ['nose'],
    'packages'               : ['my_package'],
    'install_requires'       : ['requests'],
    'scripts'                : ['bin/script1.py',
                                'bin/script2.py',
                               ],
    'include_package_data'   : True,
    'zip_safe'               : False,
    'license'                : 'MIT',
    'cmdclass'               : {'install' : install}
}

setup(**config)

0 ответов

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