如何克服-Windows上的pip安装Ansible失败,Windows上的文件名或扩展名太长 [英] How to overcome - pip install ansible on windows failing with filename or extension too long on windows
问题描述
如何修复Windows上的pip安装失败,出现以下错误.尝试安装ansible时出现此错误.
how to fix the pip install failures on windows with below error. Getting this error while trying to install ansible.
我怀疑所选的pip软件包存在问题.但是在基于Linux的系统上也可以正常工作. pip安装的操作系统会不会有任何区别
I suspect it is with issue with selected pip package for install. but the same is working fine with Linux based systems. Will there be any difference with OS for pip install
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/'
推荐答案
好吧,这似乎是一个已知的错误:
Well, it seems to be a known bug:
https://github.com/ansible/ansible/issues/31419
在Ansible 2.4.0中,模块副本使用测试套件中的符号链接:
circles -> ../ subdir3 -> ../subdir2/subdir3
Windows 10无法创建此目录树,因为路径太长.实际上,解决的路径是:
Windows 10, cannot create this directories tree because the path is too long. In fact the resolved path is:
test/integration/targets/copy/files/subdir/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir1/circles/subdir2/subdir3/
错误报告的结尾为:
我们不支持直接在Windows机器上安装ansible.您将需要类似linux的操作系统才能在其上安装ansible
We do not support installing ansible directly on a windows machine. You will need a linux like operating system to install ansible on
解决方法
一个可能的解决方法是在pypi上下载转轮,它不依赖于Linux或其他任何东西,可能是纯python:
A possible workaround is to download the wheel on pypi, it doesn't depend on Linux or whatever, probably pure python:
https://pypi.python.org/pypi/ansible/2.5.0a
(
pip install ansible
命令下载源" .tgz归档文件,执行测试,...路径问题在测试之内,因此让我们使用现成的预构建捆绑包)(the
pip install ansible
command downloads the "source" .tgz archive, performs tests, ... and the path issue is within the tests, so let's use a ready-to-use pre-built bundle)下载后,使用
pip install path/to/the/wheel/file.whl
在Windows 10计算机上测试并成功安装:
Tested and installed successfully on my Windows 10 machine:
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, installed, but let's try to import it:
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 >>>
有效!是的!
这篇关于如何克服-Windows上的pip安装Ansible失败,Windows上的文件名或扩展名太长的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!