如何克服 - 在windows上使用文件名或扩展名失败的Windows上安装ansible

时间:2018-02-08 20:17:59

标签: python windows pip

如何修复Windows上的pip安装失败,并出现以下错误。尝试安装ansible时出现此错误。

我怀疑选择的pip包安装问题。但同样适用于基于Linux的系统。与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/'

3 个答案:

答案 0 :(得分:5)

嗯,这似乎是一个已知的错误:

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的操作系统才能在

上安装ansible

解决方法

一个可能的解决方法是在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
>>>

作品!耶!

答案 1 :(得分:2)

我在不使用pip的情况下安装了ansible,这对我来说似乎很简单。

步骤:

  • https://pypi.org/project/ansible/下载压缩的.tgz归档文件

  • 打开7-zip文件,右键单击以管理员身份运行,然后解压缩。 <-管理员是必需的,因为有符号链接

  • 在该文件夹中打开一个管理控制台,然后运行:

      
        

    python setup.py安装

      

现在Windows上已安装ansible。

答案 2 :(得分:0)

我还遇到在Windows上安装ansible的问题。与其尝试在平台上安装ansible,还不是为了建议您启用Windows ubuntu子系统。

请参见https://tutorials.ubuntu.com/tutorial/tutorial-ubuntu-on-windows

一旦您通过apt-get或pip完成install ansible

-

使用PIP安装:

确保首先拥有python3-disutils:

  

sudo apt install python3-distutils

,然后按照https://pip.pypa.io/en/stable/installing/

安装pip

尝试运行ansible-如果找不到,则需要将site-packages目录添加到$ PATH中。

为避免所有这些安装工作,我建议使用apt-get。