繁体   English   中英

如何克服 - 在 windows 上 pip install ansible 失败,文件名或扩展名在 windows 上过长

[英]How to overcome - pip install ansible on windows failing with filename or extension too long on windows

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

我怀疑它与选定的用于安装的 pip 包有关。 但同样适用于基于 Linux 的系统。 pip install 和 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 的操作系统来安装 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
>>>

作品! 耶!

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

步骤:

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

  • 打开 7-zip 右键以管理员身份运行并解压。 <- admin 是必需的,因为符号链接

  • 在文件夹中打开一个管理控制台并运行:

    python setup.py 安装

现在 ansible 安装在 Windows 上。

我也遇到了在 Windows 上安装 ansible 的问题。 我建议启用 windows ubuntu 子系统,而不是尝试在平台上安装 ansible。

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

完成后,通过 apt-get 或 pip 安装 ansible

——

使用 PIP 安装:

首先确保你有 python3-disutils:

sudo apt 安装 python3-distutils

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM