【问题标题】:Ansible - install python3-apt packageAnsible - 安装 python3-apt 包
【发布时间】:2020-09-01 02:38:01
【问题描述】:

使用Ubuntu 18.04Ansible 2.9, Python 3.6.9,已安装python3-apt

关于基本的 ansible 命令ansible -b all -m apt -a "name=apache2 state=latest" 获取错误:

FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "msg": "Could not import python modules: apt, apt_pkg. Please install python3-apt package."
}

$ sudo apt-get install python3-apt

$ ansible --version
ansible 2.9.12  
python version = 3.6.9

$ python --version
Python 3.7.6

【问题讨论】:

  • 依赖项(如python3-apt)必须安装在您的剧本所针对的远程主机上,而不是运行ansible的本地主机上。
  • @larsks - 我不知道这种对目标机器的依赖,试过了 - 没用。
  • @toydarian - 不是真的。我也在受控/节点机器上安装了python3-apt - 但仍然是同样的错误。
  • 我通过添加解决了这个问题: vars: ansible_python_interpreter: "/usr/bin/python3" 然后在正确的 python 路径中查找 python3-apt 库

标签: python-3.x ansible ubuntu-18.04


【解决方案1】:

进入python3 dist-package目录

cd /usr/lib/python3/dist-packages

然后链接这两个文件

sudo ln -s apt_inst.cpython-35m-x86_64-linux-gnu.so apt_inst.so
sudo ln -s apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.so

【讨论】:

  • 你安全了我生命中的几个小时......欣赏
  • 如果您自定义安装 python3.9,dist-packages 文件夹在哪里?
  • 它将位于您在安装之前预定义的自定义文件夹中。以防万一使用此命令找到您的:python3.9 -m site
【解决方案2】:

当我安装了两个版本的python3 - python3.7python3.9 时,我遇到了同样的问题。卸载旧版本后问题就消失了。

【讨论】:

  • 你是如何卸载旧版本的?即使在卸载 python3.5 之后我仍然可以使用 python3.5 但再次重试它说 python3.5 已被删除。我使用了apt remove python3.5apt purge python3.5
【解决方案3】:
远程节点上的

/usr/bin/python 可能是 python 2.x 版本,而不是 python3。正如上面 @Chuck 所指出的,将解释器更改为 python3 应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多