我是python包装的新手,并尝试为同事创建一个与pip兼容的设置和安装后脚本。安装后脚本的目标是创建一个配置文件,该文件将为最终用户及其系统定制,虽然我想我可以让他们在安装后运行辅助安装脚本,但似乎更有意义我只需要setup.py脚本和相关的安装后处理事项。
问题是,虽然使用easy-install或un-tarballing包并且运行python setup.py install
工作正常,但pip不会。我认为pip可能是基于这个discussion from 2015禁止与stdout和stdin的交互,但是我不确定是不是这样,或者我只是没有正确地做到这一点。即使我将-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)