web-dev-qa-db-fra.com

Comment vaincre - installation instable sous Windows avec échec avec nom de fichier ou extension trop long sous Windows

comment réparer les échecs d'installation de pip sur Windows avec l'erreur ci-dessous. Obtenir cette erreur en essayant d'installer ansible.

Je soupçonne qu’il s’agit d’un problème avec le paquet pip sélectionné pour l’installation. mais la même chose fonctionne très bien avec les systèmes basés sur Linux. Y aura-t-il une différence avec le système d'exploitation pour l'installation de pip

Exception:
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "c:\python27\lib\site-packages\pip\commands\install.py", line 324, in run
    requirement_set.prepare_files(Finder)
  File "c:\python27\lib\site-packages\pip\req\req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "c:\python27\lib\site-packages\pip\req\req_set.py", line 620, in _prepare_file
    session=self.session, hashes=hashes)
  File "c:\python27\lib\site-packages\pip\download.py", line 821, in unpack_url
    hashes=hashes
  File "c:\python27\lib\site-packages\pip\download.py", line 663, in unpack_http_url
    unpack_file(from_path, location, content_type, link)
  File "c:\python27\lib\site-packages\pip\utils\__init__.py", line 605, in unpack_file
    untar_file(filename, location)
  File "c:\python27\lib\site-packages\pip\utils\__init__.py", line 553, in untar_file
    ensure_dir(path)
  File "c:\python27\lib\site-packages\pip\utils\__init__.py", line 83, in ensure_dir
    os.makedirs(path)
  File "C:\Python27\Lib\os.py", line 157, in makedirs
    mkdir(name, mode)
WindowsError: [Error 206] The filename or extension is too long: 'c:\\users\\user123\\appdata\\local\\temp\\pip-build-isnb2t\\ansible\\test/integration/targets/copy/files/subdir/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/'
6
ac184

Eh bien, cela semble être un bug connu:

https://github.com/ansible/ansible/issues/31419

Dans Ansible 2.4.0, les modules copiés utilisent des liens symboliques dans la suite de tests: https://github.com/ansible/ansible/anse/devel/test/integration/targets/copy/files/subdir/subdir1

circles -> ../
subdir3 -> ../subdir2/subdir3

Windows 10, impossible de créer cette arborescence de répertoires car le chemin est trop long. En fait, le chemin résolu est:

test/integration/targets/copy/files/subdir/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir2/subdir3/

le rapport de bogue se termine par:

Nous ne prenons pas en charge l’installation directe d’ansible sur une machine Windows. Vous aurez besoin d’un système d’exploitation de type Linux pour installer ansible sur

Workaround

Une solution possible consiste à télécharger la roue sur pypi, cela ne dépend pas de Linux ni de quoi que ce soit, probablement du pur python:

https://pypi.python.org/pypi/ansible/2.5.0a

(La commande pip install ansible télécharge l'archive "source" .tgz, effectue des tests, ... et que le problème du chemin d'accès se trouve dans les tests, utilisons donc un bundle préconfiguré prêt à l'emploi)

Une fois téléchargé, utilisez pip install path/to/the/wheel/file.whl

Testé et installé avec succès sur mon ordinateur Windows 10:

C:\Users\jotd>c:\Python27\Scripts\pip install C:\Users\jotd\Downloads\ansible-2.5.0a1-py2-none-any.whl
Processing c:\users\jotd\downloads\ansible-2.5.0a1-py2-none-any.whl
Requirement already satisfied: PyYAML in c:\python27\lib\site-packages (from ansible==2.5.0a1)
Collecting cryptography (from ansible==2.5.0a1)
<a lot of package collecting...>
Installing collected packages: idna, pycparser, cffi, asn1crypto, ipaddress, cryptography, pynacl, bcrypt, pyasn1, paramiko, ansible
  Running setup.py install for pycparser ... done
  Running setup.py install for ipaddress ... done
Successfully installed ansible-2.5.0a1 asn1crypto-0.24.0 bcrypt-3.1.4 cffi-1.11.4 cryptography-2.1.4 idna-2.6 ipaddress-1.0.19 paramiko-2.4.0 pyasn1-0.4.2 pycparser-2.18 pynacl-1.2.1

ok, installé, mais essayons de l'importer:

C:\Users\jotd>c:\python27\python
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ansible
>>>

travaux! Yay!

5

J'ai installé ansible sans utiliser de pip, ce qui me paraissait assez simple.

Pas:

  • télécharger l'archive .tgz compressée à partir de https://pypi.org/project/ansible/

  • ouvrez 7-Zip en cliquant avec le bouton droit de la souris sur exécutez-vous en tant qu'administrateur et extrayez-le. <- admin est nécessaire à cause des liens symboliques

  • a ouvert une console d’administration dans le dossier et a exécuté:

    installation de python.py install

maintenant ansible est installé sur Windows.

2
mcmonkeys1

J'ai également rencontré des problèmes pour installer ansible sous Windows. Au lieu d'essayer d'installer ansible sur une plate-forme, ce n'est pas fait, je suggère d'activer le sous-système Windows Ubuntu.

Voir https://tutorials.ubuntu.com/tutorial/tutorial-ubuntu-on-windows } _

Une fois que vous avez fait cela installer ansible via apt-get ou pip.

-

Installation avec PIP:

Assurez-vous d’avoir python3-disutils en premier:

Sudo pour installer python3-distutils

puis installez pip selon https://pip.pypa.io/en/stable/installing/

Essayez de lancer ansible - si vous ne le trouvez pas, vous devez ajouter le répertoire site-packages à votre $ PATH.

Pour éviter tout ce travail d'installation, je suggère d'utiliser apt-get.

0
Almenon