从命令行脚本导入或安装模块

时间:2018-01-17 16:53:52

标签: python command-line pip sys

我有一个看起来像这样的脚本:

import pip
import sys

def main(argv):
    ...[does stuff]...

if __name__ == "__main__":
    main(sys.argv[1:])

我想实现我在堆栈上找到的导入包的函数(或者如果nescessary安装它)。

def import_or_install(package):
try:
    __import__(package)
except ImportError:
    pip.main(['install', package])

我的愿景是,如果我在随机计算机上运行脚本,如果未安装运行所述脚本所需的打包,脚本会自动执行;否则,导入模块。

当我尝试运行它时,我得到一个NameError,指出我在main()中调用的模块没有定义。

链接到我找到该功能的地方:Check if module exists, if not install it

1 个答案:

答案 0 :(得分:0)

我在问题中理解,如果是这样的话:

import pip

not_installed = []

try:
 import test1

except ImportError,err:
    k= str(err).split(' ')
    not_installed.append(k[-1])

for i in not_installed:
   pip.main(['install',i])

这里test1是要运行的文件,相应地将其转换为cli

P.S:检查1导入错误消息