30 August 2021

blog windows10 pip

Pour installer ansible, j'utilise la ligne de commande dans un terminal windows.

pip install ansible

L'installation échoue parce que les fichiers detarés ne sont pas accessibles. Il s'agit apparement d'un problème lié à la longueur du path des fichiers.

Il semblerait qu'il soit possible de changer le comportement de windows à partir de la release 1607 de windows 10.

https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later

En effet la valeur de

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"DisableDeleteNotification"=dword:00000000
"FilterSupportedFeaturesMode"=dword:00000000
"LongPathsEnabled"=dword:00000000
"NtfsAllowExtendedCharacter8dot3Rename"=dword:00000000
"NtfsBugcheckOnCorrupt"=dword:00000000
"NtfsDisable8dot3NameCreation"=dword:00000002
"NtfsDisableCompression"=dword:00000000
"NtfsDisableEncryption"=dword:00000000
"NtfsDisableLfsDowngrade"=dword:00000000
"NtfsDisableVolsnapHints"=dword:00000000
"NtfsEncryptPagingFile"=dword:00000000
"NtfsMemoryUsage"=dword:00000000
"NtfsMftZoneReservation"=dword:00000000
"NtfsQuotaNotifyRate"=dword:00000e10
"RefsDisableLastAccessUpdate"=dword:00000001
"ScrubMode"=dword:00000002
"SymlinkLocalToLocalEvaluation"=dword:00000001
"SymlinkLocalToRemoteEvaluation"=dword:00000001
"SymlinkRemoteToLocalEvaluation"=dword:00000000
"SymlinkRemoteToRemoteEvaluation"=dword:00000000
"UdfsCloseSessionOnEject"=dword:00000003
"UdfsSoftwareDefectManagement"=dword:00000000
"Win31FileSystem"=dword:00000000
"Win95TruncatedExtensions"=dword:00000001
"NtfsDisableLastAccessUpdate"=dword:80000002
"SuppressInheritanceSupport"=dword:00000001

Il faut passer la valeur de "LongPathsEnabled" à 1.

Ce changement a un effet sur l'installation dans la mesure ou l'on peut avancer un cran plus loin.
Il est possible que d'autres bénéfices apparaissent dans d'autres applications, surtout celles "unix-like".

Note : de toute façon, sans environnement unix, ansible n'est pas très fonctionnel... donc j'ai refait toute l'installation dans WSL.