【发布时间】:2019-12-02 15:39:17
【问题描述】:
在这个任务中,我应该访问一个文件夹 ~/Libs/lib 并安装找到的 pip 包的最新版本。
我通过 ansible 在本地安装 pip 包时出错。
注意:包在 ansible 外面安装得很好
我的任务
- name: Get latest lib version
find:
paths: "{{ lib_path }}"
patterns: '*.whl'
register: lib_wheels_file
- name: Get latest file
set_fact:
latest_file: "file:///{{ lib_wheels_file.files | sort(reverse=true) | first }}"
become: yes
- name: Install lib
pip:
name: '{{ latest_file }}'
become: yes
lib_path is found under ~/Libs
我得到的错误:
错误:无效要求:\"u'woth': False\"\n"
使用 -vvv 选项我得到了这个输出:
fatal: [localhost]: FAILED! => {
"changed": false,
"cmd": [
"/usr/local/bin/pip2",
"install",
"file:///{u'uid': 1000",
" u'woth': False",
" u'mtime': 1571862393.0",
" u'inode': 11798916",
" u'isgid': False",
" u'size': 175829",
" u'roth': True",
" u'isuid': False",
" u'isreg': True",
" u'pw_name': u'tb62'",
" u'gid': 1000",
" u'ischr': False",
" u'wusr': True",
" u'xoth': False",
" u'islnk': False",
" u'nlink': 1",
" u'issock': False",
" u'rgrp': True",
" u'gr_name': u'tb62'",
" u'path': u'/home/tb62/Libs/lib/lib-1.4.0-py2-none-any.whl'",
" u'xusr': False",
" u'atime': 1575281633.538627",
" u'isdir': False",
" u'ctime': 1574842250.317574",
" u'wgrp': False",
" u'xgrp': False",
" u'dev': 2065",
" u'isblk': False",
" u'isfifo': False",
" u'mode': u'0644'",
" u'rusr': True}\""
],
"invocation": {
"module_args": {
"chdir": null,
"editable": false,
"executable": null,
"extra_args": null,
"name": [
"file:///{u'uid': 1000",
" u'woth': False",
" u'mtime': 1571862393.0",
" u'inode': 11798916",
" u'isgid': False",
" u'size': 175829",
" u'roth': True",
" u'isuid': False",
" u'isreg': True",
" u'pw_name': u'tb62'",
" u'gid': 1000",
" u'ischr': False",
" u'wusr': True",
" u'xoth': False",
" u'islnk': False",
" u'nlink': 1",
" u'issock': False",
" u'rgrp': True",
" u'gr_name': u'tb62'",
" u'path': u'/home/tb62/Libs/lib/lib-1.4.0-py2-none-any.whl'",
" u'xusr': False",
" u'atime': 1575281633.538627",
" u'isdir': False",
" u'ctime': 1574842250.317574",
" u'wgrp': False",
" u'xgrp': False",
" u'dev': 2065",
" u'isblk': False",
" u'isfifo': False",
" u'mode': u'0644'",
" u'rusr': True}\""
],
"requirements": null,
"state": "present",
"umask": null,
"version": null,
"virtualenv": null,
"virtualenv_command": "virtualenv",
"virtualenv_python": null,
"virtualenv_site_packages": false
}
},
【问题讨论】:
-
lib_wheels_file.files不是字符串(文件名)列表,而是a list of dictionaries,您必须从中提取path键。 -
好吧,我只需要从完整路径中提取文件名,请问有什么建议吗?
-
试试
{{ lib_wheels_file.files | sort(reverse=true) | first | attr('path') }}或{{ lib_wheels_file.files | attr('path') | sort(reverse=true) | first }} -
关于这个解决方案
{{ lib_wheels_file.files | attr('path') | sort(reverse=true) | first | attr('path') }},我得到了错误是:'list object' has no attribute 'path -
@phd :我找到了解决方案,我将在新评论中分享。你的 cmets 帮了我很多