提示未完全卸载软件包

时间:2019-09-11 15:51:24

标签: python pip upgrade uninstall

我正在尝试为我的包裹创建一个自动升级脚本。该脚本运行一个“点列表-o”,并检查输出是否包含程序包名称。如果是这样,则该软件包已过期,并发送“ pip install [package] --upgrade”命令。除了未正确卸载软件包外,这里似乎没有任何问题。

如果pip不执行旧软件包的卸载(作为升级命令的一部分),则它将退出该过程而不安装新版本。这使系统没有软件包的副本,因此对upgradeScript的新调用说它不再存在。

当打开脚本或在其他位置运行脚本时,该软件包无法完全卸载,但这只能防止这些脚本形式被卸载,而其余的软件包也被卸载,从而使软件包处于部分卸载状态。

是否有pip的任何部分可以告诉您软件包的一部分是否正在使用中,因此可以停止升级并提示用户结束使用该软件包的进程? 要么 有没有办法将部分卸载的软件包恢复到卸载之前的原始状态,然后提示用户关闭进程再尝试?

这是一个非常棘手的开发过程,因为您至少需要两个版本的软件包,都必须具有autoupgrade脚本才能测试功能,并且任何失败都意味着您必须转到安装目录并手动删除剩余的文件,然后再进行新的项目pip安装。

此操作的目的是使Java应用程序中的按钮能够启动此脚本,以允许软件包自行更新。

packageName = "pip" #for example
oPackageList = subprocess.check_output(['pip', 'list', '-o'], stderr=subprocess.STDOUT)).decode()
if packageName in oPackageList:
    subprocess.check_output(['pip', 'install', str(packageName), '--upgrade'], stderr=subprocess.STDOUT)

0 个答案:

没有答案