python 自动下载 moudle

38 篇文章 11 订阅 ¥9.90 ¥99.00
这段代码展示了如何使用Python自动查找当前目录及其子目录下未导入的模块,并使用pip进行安装。首先,通过ls -R获取所有文件,然后过滤出Python文件。接着,检查哪些模块未被导入并写入到daicy.py中尝试运行,如果运行失败则使用pip安装相应的模块。最后,通过grep命令找出所有导入语句,更新待安装模块集合,并调用dpip函数完成安装过程。
摘要由CSDN通过智能技术生成
import sys,re,subprocess
import os
from subprocess import CalledProcessError

new_set = set()
ls = set()

def dls():
    temp_set = set()
    a = subprocess.check_output("ls -R", shell=True)
    for line in a.split('\n'):
          str = re.sub(r'.py', r'', line)
          if  str.find('.')<0  and str!='\n' :
               temp_set.add(str)
               print str
    return temp_set
   

def dpip(new_set):
    ls = dls()
    for str in new_set-ls:
         str = str.replace('\n','')
         with open('daicy.py', 'w') as f:
                     f.write('import '+str)
         try:
              a = subprocess.check_call('python daicy.py', shell=True)
              if a!=0:
                  command = 'pip  install  '+str
                  print command
                  subprocess.call(command, shell=True)
         except CalledProcessError, e:
            print 'except:', e
            command = 'pip  install  '+str
            print command
            os.system(command)
         finally:
              pass

a = subprocess.Popen('''find -name '*.py' | xargs grep -h -o -w  -s "^import\s\+\([\_0-9a-zA-Z]\+\)\|^from\s\+\([\_0-9a-zA-Z]\+\)"''', shell=True,stdout=subprocess.PIPE)
for line in a.stdout.readlines():
    line = line.replace('\n','')
    new_set.add(re.sub(r'import\s+|from\s+', r'', line))


dpip(new_set)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值