在安装包时提示用户 "pip install <pkg>
我创建了一个包含setup.py文件的tar.gz包。这个setup.py文件使用了distutils.core提供的setup()函数。我想在用户运行“pip install .tar.gz”时提示他们输入信息。不幸的是,pip会通过一个特殊的日志过滤器来处理“python setup.py install”命令的所有输出,这个过滤器会逐行读取输出。这就意味着我不能直接显示像“邮箱: ...”这样的提示,因为“邮箱: ”这句话要等用户按下回车后才会显示出来。而且,这个日志过滤器还会把每一行的输出都缩进,这样看起来就不太好。
1 个回答
2
别这么做。
如果在安装过程中真的需要用户提供信息,最好让用户设置一个环境变量,如果没有设置就直接报错。更好的做法是要求用户提供一个简单的文本配置文件来运行你的模块,并在安装时用默认值来填充这个文件。
不要在安装过程中让用户进行交互,因为PIP和easy_install的设计初衷就是能够自动安装一个软件包所需的所有依赖项——这意味着它们可能会批量安装很多软件包。用户只希望pip install能顺利完成,如果突然出现需要用户输入的提示,会打乱自动安装、依赖关系链、构建安装、远程安装等流程。