在脚本中导入或安装包

时间:2018-01-23 15:30:17

标签: command-line import pip

我有一个简单的脚本,它在命令行上接受用户输入并返回一个数据帧。

def import_or_install(package):
    try:
        __import__(package)
        print "Importing: "+ package
    except ImportError:
        print "\nInstalling:"+ package
        pip.main(['install', package])

import pip
import argparse
#import pandas

def main():
    import_or_install("pandas")

    parser = argparse.ArgumentParser(usage = argparse.SUPPRESS)
    parser.add_argument('-i', 
                        nargs='+', 
                        required=True)

    args = parser.parse_args()
    inputs = args.i

    print pandas.DataFrame(inputs)



if __name__ == "__main__":
    main()

当我正常导入pandas(导入pandas)时,脚本可以正常工作。但是,当我尝试使用import_or_install(包)函数导入pandas时,我收到以下错误:

NameError:全球名称' pandas'未定义

我的目标是能够运行此脚本,而无需用户在运行脚本之前安装模块。

这种方法是否可行?

要在comandline类型

中运行脚本

python filename.py -i ,然后列出一些用空格分隔的数字。 例如:" python test.py -i 1 2 3 4"

1 个答案:

答案 0 :(得分:0)

import pandas

def main():
    import_or_install("pandas")

您可以在包可用之前尝试导入pandas。进口 它安装后:

def main():
    import_or_install("pandas")
    import pandas