Je veux écrire un script qui nettoie toutes les versions existantes de Python sur une machine, et un script séparé pour réinstaller les versions 2.7 et 3.5 dans des emplacements standardisés. J'essaie actuellement de faire cela en utilisant les cmdlets de gestion de paquets dans PowerShell 5.1.14393.187.Comment supprimer des installations Python avec PowerShell Package Management?
Pour le script de nettoyage, j'ai commencé avec les commandes de paquet de PowerShell:
Get-Package "*python*" | Uninstall-Package
qui, lorsqu'il est exécuté à partir d'une console d'administration, semble fonctionner très bien, mais une enquête plus poussée laisse quelques paquets restants ...
PS C:\WINDOWS\system32> Get-Package "*python*"
Name Version Source ProviderName
---- ------- ------ ------------
Python 3.5.1 (64-bit) 3.5.1150.0 Programs
Python 3.5.1 pip Bootstrap ... 3.5.1150.0 msi
Python 3.5.1 Tcl/Tk Support... 3.5.1150.0 msi
Python 2.7.11 2.7.11150 msi
Python 3.5.2 pip Bootstrap ... 3.5.2150.0 msi
Python 3.5.2 (32-bit) 3.5.2150.0 Programs
Pourquoi ces packages sont-ils toujours présents après Uninstall-Package? Existe-t-il un moyen pratique de le faire? Existe-t-il un moyen pratique de scripter la ré-installation de Python afin que cela ne se reproduise plus?
Mise à jour
J'ai eu un certain succès dans le nettoyage de la majorité de cela en utilisant l'interface graphique du panneau de commande pour la première réparation, puis désinstaller les installations Python 3. Je suis surpris qu'il n'y ait pas de commande Repair-Package
pour aller avec Get-Package
. Une fois les autres parties de Python 3 réparées, il y avait un paquet MSI appelé "Python Launcher", et le paquet Python 2.7 MSI restait signalé par Get-Package
, mais rien dans l'interface graphique. À ce stade, Uninstall-Package
sur le "Python Launcher" a réussi avec un avertissement indiquant qu'un redémarrage était requis. Pas de chance avec msi: Python 2.7.11/2.7.11150.
Informations complémentaires:
Je pense chocolaté v0.10.1 peut avoir contribué à la situation actuelle. Au moins certaines des machines peuvent avoir installé python en utilisant chocolaty du référentiel public. Sur la même machine ci-dessus, j'ai aussi essayé ceci:
PS C:\WINDOWS\system32> choco uninstall python
Chocolatey v0.10.1
Uninstalling the following packages:
python
python is not installed. Cannot uninstall a non-existent package.
Chocolatey uninstalled 0/1 packages. 1 packages failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Failures
- python - python is not installed. Cannot uninstall a non-existent package.
Did you know the proceeds of Pro (and some proceeds from other
licensed editions) go into bettering the community infrastructure?
Your support ensures an active community, it makes you look smarter,
plus it nets you some awesome features!
https://chocolatey.org/compare
PS C:\WINDOWS\system32> choco uninstall python3
Chocolatey v0.10.1
Uninstalling the following packages:
python3
python3 v3.5.1
Skipping auto uninstaller - No registry snapshot.
python3 has been successfully uninstalled.
Chocolatey uninstalled 1/1 packages. 0 packages failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
PS C:\WINDOWS\system32> choco uninstall python2
Chocolatey v0.10.1
Uninstalling the following packages:
python2
python2 v2.7.11
Running auto uninstaller...
Skipping auto uninstaller - The application appears to have been uninstalled already by other means.
python2 has been successfully uninstalled.
Chocolatey uninstalled 1/1 packages. 0 packages failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
PS C:\WINDOWS\system32> get-package "*python*"
Name Version Source ProviderName
---- ------- ------ ------------
Python 3.5.1 (64-bit) 3.5.1150.0 Programs
Python 3.5.1 pip Bootstrap ... 3.5.1150.0 msi
Python 3.5.1 Tcl/Tk Support... 3.5.1150.0 msi
Python 2.7.11 2.7.11150 msi
Python 3.5.2 pip Bootstrap ... 3.5.2150.0 msi
Merci @ferventcoder. Puisque tous les paquets Python ont des programmes d'installation basés sur MSI, j'espérais que le nettoyage pourrait être réalisé en utilisant le fournisseur de paquets msi fourni par Microsoft. Les fournisseurs listés sont ** msi, msu, NuGet, PowerShellGet, ** et ** Programs **. Est-ce que l'un de ceux-ci est celui que vous ne mentionnez pas? –
Seul le fournisseur PackageManagement actuel pour Chocolatey n'est pas pris en charge. Vous pouvez commencer par essayer de désinstaller le fournisseur msi. – ferventcoder
OK, donc je pense que le fournisseur non pris en charge n'était pas impliqué. Y at-il des informations plus détaillées sur la façon dont ce programme de désinstallation automatique Chocolatey fonctionne quelque part? Utilise-t-il, par exemple, les mécanismes MSI si possible? –