Windows下批量安装Python模块

一、主要思路

Python安装包分文压缩包和.exe两种,其中压缩包的安装是先进行解压,在通过运行setup.py对模块进行安装。而exe可执行文件安装模块只要直接运行。而压缩包又包括.tar.gz.zip等文件格式。所以我们首先要对这些压缩文件进行解压,然后遍历文件夹找到setup.py进行安装。

 

二、具体方法

exe可执行文件安装:os.system()调用系统命令直接安装

压缩文件安装:首先要对这些压缩文件进行解压,然后遍历解压后的文件夹找到setup.py,通过os.system()调用cmd命令(Python setup.py install)对模块进行安装。

其他方法:

首先安装好pip,直接通过os.system()调用pip  install 模块名   进行安装

 

 

三、测试模块

ez_setup-0.9.tar.gz

pip-1.5.6.tar.gz

setuptools-1.1.7.tar.gz

setuptools-5.4.1-py2.py3-none-any.zip

lxml-3.2.0.win-amd64-py2.7.exe

Twisted-13.1.0.win-amd64-py2.7.exe

zope.interface-4.0.5.win-amd64-py2.7.exe

MySQL-python-1.2.3.win-amd64-py2.7.exe

 

四、代码实现

# -*-coding: utf-8 -*-

importos,zipfile,tarfile,rarfile

#解压压缩包

defUnzip(target_dir):

os.chdir(target_dir)           #将当期目录设为target_dir的目录

file_list =os.listdir(target_dir)   #获得文件链表

for file_name in file_list:

ifos.path.splitext(file_name)[1] =='.gz':        #解压tar.gz

tar = tarfile.open(file_name)

tar.extractall(os.path.join(target_dir,os.path.splitext(os.path.splitext(file_name)[0])[0]))

 tar.close()

elif os.path.splitext(file_name)[1]=='.zip':      #解压zip

    zip_file = zipfile.ZipFile(file_name)

zip_file.extractall(os.path.join(target_dir,os.path.splitext(os.path.splitext(file_name)[0])[0]))

    zip_file.close()

    elif os.path.splitext(file_name)[1] =='.rar':  #解压rar,运行前需安装模块tarfile

    rar_file = rarfile.RarFile(file_name)

     rar_file.extractall(os.path.join(target_dir,os.path.splitext(os.path.splitext(file_name)[0])[0]))

     rar_file.close()

  else:continue

#安装模块

defSetup_zip(unzip_file):

forparent,dirnames,filenames in os.walk(unzip_file):#三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字    

 for filename in filenames:

    if filename=='setup.py':

          a=os.path.join(parent,filename)    #setup.py路径

          b ='python '+a+' install'

          os.system(b)

          os.system('pause')

if os.path.splitext(filename)[1] =='.exe':

          a=os.path.join(parent,filename)    #exe可执行文件路径

          os.system(a)

defmain():

unzip_dir=raw_input("""Pleasepress Enter to start setup""")

#print 'unzip_dir = ' + unzip_dir

if unzip_dir=='':

Unzip(os.getcwd())

Setup_zip(os.getcwd())

else:

Unzip(unzip_dir)

Setup_zip(unzip_dir)

           

 

if__name__=='__main__':

main()

 

五、结果

测试的压缩包全部正常安装,exe可执行文件的MySQLTwisted模块没有正确安装。

MySQLTwisted模块为exe文件,已经按步骤正确安装,这里出错可能是还需要一些依赖的库。

六、存在问题

1.      脚本必须放在安装模块文件夹中,每次调用os.system都会默认工作目录为当前目录。

2.      Os.system只是调用系统命令,当没有安装setuptools的时候,模块能否正确安装还没测试。安装exe文件时还是需要一步步点击来安装模块,暂时没有找到方法对exe文件的模块直接安装


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值