使用 pip 安裝了一個 Python 的第三方模塊的時候,總會安裝其依賴的其他模塊。而當我們卸載的時候,卻不能將其依賴的模塊一并刪除。現(xiàn)在我想要達到的效果就是當我刪除某一個模塊的時候,我希望將其依賴的模塊也刪掉。
想要達到這個目標,需要知道下面這些東西:
- pip show <模塊名> 這個命令行命令可以查看一個包的詳細信息,包括這個包的依賴關(guān)系。 重要的一點是,如果輸入的模塊包根本不存在,則什么東西都不會打印
如果模塊不存在,則什么都不會打印
xlwings 模塊的依賴
?
通過上面的圖,我們可以知道 xlwings 這個模塊依賴 comtypes 這個模塊。
- 我們可以通過 os 模塊中的 popen() 函數(shù)來得到命令行命令打印的東西
test.gif
-
pip uninstall -y <模塊名> 這個命令可以刪除一個模塊, -y 表示不需要按確認。
-
os.system() 函數(shù)可以執(zhí)行一條 shell 命令
開始寫一個卸載程序
首先編寫一個可以查看一個模塊依賴的函數(shù)
def check_dependents(module_name):
"""
查看一個模塊的依賴
:param module_name: 模塊名
:return: module_name 所依賴的模塊的列表
"""
with os.popen('pip show %s' % module_name) as p:
dependents = p.readlines()
if not len(dependents):
return None
dependents = dependents[-1]
dependents = dependents.split(':')[-1].replace(' ', '').strip()
if dependents:
dependents = dependents.split(',')
else:
dependents = None
return dependents
if __name__=='__main__':
check_dependents('ipython')
查看 ipython 模塊的依賴
遞歸刪除模塊
import os
def remove(module_name):
"""
遞歸地卸載一個模塊
:param module_name: 模塊名稱
:return: None
"""
dependents = check_dependents(module_name)
if dependents:
for package in dependents:
remove(package)
os.system('pip uninstall -y %s' % module_name)
完整的程序
import os
def check_dependents(module_name):
"""
查看一個模塊的依賴
:param module_name: 模塊名
:return: module_name 所依賴的模塊的列表
"""
with os.popen('pip show %s' % module_name) as p:
dependents = p.readlines()
if not len(dependents):
return None
dependents = dependents[-1]
dependents = dependents.split(':')[-1].replace(' ', '').strip()
if dependents:
dependents = dependents.split(',')
else:
dependents = None
return dependents
def remove(module_name):
"""
遞歸地卸載一個模塊
:param module_name: 模塊名稱
:return: None
"""
dependents = check_dependents(module_name)
if dependents:
for package in dependents:
remove(package)
os.system('pip uninstall -y %s' % module_name)
if __name__ == '__main__':
pkg_name = input('請輸入要卸載的第三方模塊包: ')
remove(pkg_name)
演示卸載 ipython 模塊
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
