自动安装需要的模块包自动安装需要的模块包括什么
在部署Python程序時,往往需要先安裝很多需要的模塊包。如果一個一個安裝就會出現(xiàn)忘記的情況,或者新增加某個新的模塊時,也可能會忘記安裝。如果程序引用模塊失敗,能自動安裝模塊就最好了。下面,將講解python引用模塊失敗后,如何實現(xiàn)自動安裝模塊。
Python自動安裝模塊思路大概如下:
1、列舉需要引用的所有模塊名(庫)
把需要引用的模塊用字典記錄下來(默認所有模塊都未安裝),記錄方式如下:
'''
字典={庫名: 安裝情況}
0未安裝,1已安裝
'''
dict_pkg_name = {'pyecharts': '0', # 可視化圖表庫
'pandas': '0', # 數(shù)據(jù)處理庫
'echarts-countries-pypkg': '0', # 全球國家地圖-地圖包
'echarts-cities-pypkg': '0', # 全球城市地圖-地圖包
'echarts-china-provinces-pypkg': '0', # 中國省級地圖-地圖包
'echarts-china-cities-pypkg': '0', # 中國市級地圖-地圖包
'echarts-china-counties-pypkg': '0', # 城市地圖-地圖包
'echarts-china-misc-pypkg': '0', # 未知地圖-地圖包
'echarts-united-kingdom-pypkg': '0', # 未知地圖-地圖包
'output_file': '0', # 圖表輸出
'--upgrade pip': '0' # 更新包 # pip install --upgrade package_name
}
2、列舉常用的鏡像源地址
如果模塊引用失敗,需到對應的鏡像源地址下載,有時網(wǎng)絡環(huán)境不同,可能某個鏡像源地址連接超時,無法下載,這時就需要到其他鏡像源地址進行下載了。(如本人電腦在OA內網(wǎng)下就無法直接用“pip install 庫名”方式進行安裝)。故把一些常用的鏡像源地址用字典記錄下來,如:
# 國內鏡像源
dict_pkg_NET = {'清華': R'pip3 install {pkg_name} -i https://pypi.tuna.tsinghua.edu.cn/simple ',
'阿里云': R'pip3 install {pkg_name} -i http://mirrors.aliyun.com/pypi/simple/',
'中國科技大學': R'pip3 install {pkg_name} -i https://pypi.mirrors.ustc.edu.cn/simple/',
'華中理工大學': R'pip3 install {pkg_name} -i http://pypi.hustunique.com/',
'山東理工大學': R'pip3 install {pkg_name} -i http://pypi.sdutlinux.org/',
'豆瓣': R'pip3 install {pkg_name} -i http://pypi.douban.com/simple',
'豆瓣2': R'pip install {pkg_name} -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com',
'官網(wǎng)2': R'pip3 install {pkg_name}',
'官網(wǎng)': R'pip install {pkg_name}'
}
3、模塊引用異常處理
使用 try...except...方式,引用模塊如果失敗,則通過遍歷模塊字典、鏡像源地址進行實現(xiàn)模塊安裝,同時標識已成功安裝的模塊,避免重復安裝。具體腳本如下:
try:
print('import庫: 開始')
# import numpy2 as np #沒有numy2?
from pyecharts.charts import Bar
from pyecharts.charts import Line
from pyecharts import options as opts
import matplotlib.pyplot as plt
print('import庫: END')
except Exception as err:
print('引用模塊錯誤: ' + str(err))
print('\n')
# 遍歷庫名
for key_pkg_name in dict_pkg_name:
if dict_pkg_name[key_pkg_name] == '0':
# 遍歷網(wǎng)址進行安裝
for key_pkg_NET in dict_pkg_NET:
try:
pip_install = dict_pkg_NET[key_pkg_NET].format(pkg_name=key_pkg_name)
print('開始安裝: '+pip_install)
os.system(pip_install)
dict_pkg_name[key_pkg_name] = '1'
print('\n')
break
except Exception as err:
print('安裝失敗: ' + str(err))
# print('\n')
pass
4、循環(huán)安裝模塊
上述的第3步中,模塊引用失敗安裝,有時可能網(wǎng)絡延時等各種原因,運行一次未能完全安裝成功。故需多次循環(huán)運行。有時有些模塊安裝成功,但引用時仍然失敗,如果引用失敗就進行安裝循環(huán),可能會進入死循環(huán)。
故為避免死循環(huán),設置循環(huán)次數(shù)為3,運行3次后,不管最終引用成功或失敗,都終止循環(huán)安裝。具體腳本如下:
count = 3 # 設置循環(huán)運行3次
while count:
try:
print('import庫: 開始')
# import numpy2 as np #沒有numy2?
from pyecharts.charts import Bar
from pyecharts.charts import Line
from pyecharts import options as opts
import matplotlib.pyplot as plt
print('import庫: END')
break
except Exception as err:
print('引用模塊錯誤: ' + str(err))
print('\n')
# 遍歷庫名
for key_pkg_name in dict_pkg_name:
if dict_pkg_name[key_pkg_name] == '0':
# 遍歷網(wǎng)址進行安裝
for key_pkg_NET in dict_pkg_NET:
try:
pip_install = dict_pkg_NET[key_pkg_NET].format(pkg_name=key_pkg_name)
print('開始安裝: '+pip_install)
os.system(pip_install)
dict_pkg_name[key_pkg_name] = '1'
print('\n')
break
except Exception as err:
print('安裝失敗: ' + str(err))
# print('\n')
pass
finally:
count -= 1
綜上,所有腳本如下:
import os
# 引用python模塊庫
'''
字典={庫名: 安裝情況}
0未安裝,1已安裝
'''
dict_pkg_name = {'pyecharts': '0', # 可視化圖表庫
'pandas': '0', # 數(shù)據(jù)處理庫
'echarts-countries-pypkg': '0', # 全球國家地圖-地圖包
'echarts-cities-pypkg': '0', # 全球城市地圖-地圖包
'echarts-china-provinces-pypkg': '0', # 中國省級地圖-地圖包
'echarts-china-cities-pypkg': '0', # 中國市級地圖-地圖包
'echarts-china-counties-pypkg': '0', # 城市地圖-地圖包
'echarts-china-misc-pypkg': '0', # 未知地圖-地圖包
'echarts-united-kingdom-pypkg': '0', # 未知地圖-地圖包
'output_file': '0', # 圖表輸出
'--upgrade pip': '0' # 更新包 # pip install --upgrade package_name
}
# 國內鏡像源
dict_pkg_NET = {'清華': R'pip3 install {pkg_name} -i https://pypi.tuna.tsinghua.edu.cn/simple ',
'阿里云': R'pip3 install {pkg_name} -i http://mirrors.aliyun.com/pypi/simple/',
'中國科技大學': R'pip3 install {pkg_name} -i https://pypi.mirrors.ustc.edu.cn/simple/',
'華中理工大學': R'pip3 install {pkg_name} -i http://pypi.hustunique.com/',
'山東理工大學': R'pip3 install {pkg_name} -i http://pypi.sdutlinux.org/',
'豆瓣': R'pip3 install {pkg_name} -i http://pypi.douban.com/simple',
'豆瓣2': R'pip install {pkg_name} -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com',
'官網(wǎng)2': R'pip3 install {pkg_name}',
'官網(wǎng)': R'pip install {pkg_name}'
}
count = 3 # 設置循環(huán)運行3次
while count:
try:
print('import庫: 開始')
# import numpy2 as np #沒有numy2?
from pyecharts.charts import Bar
from pyecharts.charts import Line
from pyecharts import options as opts
import matplotlib.pyplot as plt
print('import庫: END')
break
except Exception as err:
print('引用模塊錯誤: ' + str(err))
print('\n')
# 遍歷庫名
for key_pkg_name in dict_pkg_name:
if dict_pkg_name[key_pkg_name] == '0':
# 遍歷網(wǎng)址進行安裝
for key_pkg_NET in dict_pkg_NET:
try:
pip_install = dict_pkg_NET[key_pkg_NET].format(pkg_name=key_pkg_name)
print('開始安裝: '+pip_install)
os.system(pip_install)
dict_pkg_name[key_pkg_name] = '1'
print('\n')
break
except Exception as err:
print('安裝失敗: ' + str(err))
# print('\n')
pass
finally:
count -= 1
# 主程序:
if __name__ == '__main__':
print('主程序: ')
總結
以上是生活随笔為你收集整理的自动安装需要的模块包自动安装需要的模块包括什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode239. 滑动窗口最大值
- 下一篇: 天猫发布首份家装放心选商品指南天猫发布首