如何克服-Windows上的pip安装Ansible失败,Windows上的文件名或扩展名太长
问题内容:
如何修复Windows上的pip安装失败,出现以下错误。尝试安装ansible时出现此错误。
我怀疑所选的pip软件包存在问题。但是在基于Linux的系统上也可以正常工作。pip操作系统与OS会有什么区别吗
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/'
问题答案:
好吧,这似乎是一个已知的错误:
https://github.com/ansible/ansible/issues/31419
在Ansible
2.4.0中,模块副本使用测试套件中的符号链接:https
:
//github.com/ansible/ansible/tree/devel/test/integration/targets/copy/files/subdir/subdir1
circles -> ../
subdir3 -> ../subdir2/subdir3
Windows 10无法创建此目录树,因为路径太长。实际上,解决的路径是:
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的操作系统才能在
解决方法
一个可能的解决方法是在pypi上下载转轮,它不依赖于Linux或其他任何东西,可能是纯python:
https://pypi.python.org/pypi/ansible/2.5.0a
(该pip install ansible
命令下载了“源”
.tgz归档文件,执行了测试,…并且路径问题在测试之内,所以让我们使用一个现成的预构建包)
下载后,使用 pip install path/to/the/wheel/file.whl
已在我的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
好的,已安装,但是让我们尝试导入它:
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
>>>
作品!好极了!