You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac系统下Ansible库报ModuleNotFoundError: No module named 'pysftp'的解决方法

Ansible中pysftp模块找不到的问题解决

环境信息

操作系统:Mac OS
Ansible版本信息:

$ ansible --version
ansible 2.10.8
  config file = /Users/cfouts/.ansible.cfg
  configured module search path = ['/Users/myUser/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/Cellar/ansible/3.3.0/libexec/lib/python3.9/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.9.4 (default, Apr  5 2021, 01:50:46) [Clang 12.0.0 (clang-1200.0.32.29)]

问题描述

修改自定义ftp.py模块引入pysftp以支持SFTP后,执行任务时报错:

ModuleNotFoundError: No module named 'pysftp'

即使添加了安装pysftp的pip任务(执行显示ok),问题依然存在。

问题原因

Ansible在Mac上通过Homebrew安装时,会创建一个独立的Python虚拟环境(路径为/usr/local/Cellar/ansible/3.3.0/libexec/),默认的pip任务会将pysftp安装到系统或用户的Python环境中,而非Ansible专属的环境,导致模块执行时找不到依赖。

解决方案

1. 定向安装到Ansible的Python环境

修改pip任务,指定Ansible环境的pip路径:

- name: 为Ansible环境安装pysftp
  pip:
    name: pysftp
    executable: /usr/local/Cellar/ansible/3.3.0/libexec/bin/pip3.9
  delegate_to: localhost

2. 命令行直接安装

打开终端执行以下命令,直接用Ansible的pip安装依赖:

/usr/local/Cellar/ansible/3.3.0/libexec/bin/pip3.9 install pysftp

3. 自动识别Ansible的pip路径

若不确定具体路径,可通过Ansible获取当前使用的Python解释器路径:

ansible localhost -m setup -a 'filter=ansible_python'

从输出中提取ansible_python.executable的值(例如/usr/local/Cellar/ansible/3.3.0/libexec/bin/python3.9),将末尾的python3.9替换为pip3.9,再执行安装命令。

验证

安装完成后重新运行任务,即可解决模块找不到的问题。

内容的提问来源于stack exchange,提问作者Chris F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:34:55