我有一个带插件功能的程序,如果我不使用它,我不想安装setup.py中的所有插件。只应在主程序的配置中激活它们时才应安装它们。
运行主程序时是否可以使用pip
安装这些程序?
这样的事情:
try:
if PLUGINNAME not installed:
pip install PLUGINNAME
我知道可以使用os.system
强制控制台输入,但这看起来非常糟糕。
答案 0 :(得分:4)
您可以通过尝试导入模块来执行此操作。如果未安装该模块,则会给出ImportError,您可以安装该软件包。
import pip
import imp
try:
imp.find_module(package)
except ImportError:
pip.main(['install', package])
答案 1 :(得分:-2)
你应该使用这个
import pip
import sys
def install(package):
package in sys.modules
if package:
#do nothing
else:
pip.main(['install', package])
# Example
if __name__ == '__main__':
install('argh')