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)