繁体   English   中英

在 ansible 中使用自定义 python 模块 - 如何导入安装在 Z594C103F2C6E04C3D8AB059F031E0C 上的 python 模块

[英]With custom python module in ansible - How to import python modules installed on controller

我花了一整天的时间试图弄清楚这一点。 但没有成功:-(

我有一个自定义 python 模块,我正在与 ansible 一起使用。 该模块在远程节点上运行,我可以毫无问题地导入自己的自定义模块。 一切都很好,直到我想导入我安装在 controller 上的开源 python 模块(单调)。 我收到以下错误消息:

ModuleNotFoundError:没有名为“单调”的模块

只有 1 个 python 解释器(python3 在使用基本 Ubuntu 映像构建的容器中)。 果然,直接在 python 命令行导入就完美了。

我了解 ansible 收集 controller 上的所有 python 代码并将其传输到远程节点。 但不知何故,单调(或任何其他已安装的开源软件包)不会发生这种情况。 事实上,这甚至可以使用已安装的软件包,但我不知何故失去了这种能力。 可能是我很幸运,但是在 ansible 更新后运气消失了......我认为它与 ansible 和安装的 python 之间的一些搜索路径有关。 For what its worth, Ubuntu's pip version apparently installs packages under /usr/local/lib/python3.8/dist-packages/, where I can find the monotonic package (and jinja2, which I presumed was installed as a dependency to ansible. ...)

所以,我的问题很简单,设置什么是正确的环境变量来访问 python 的系统安装包?

Ansible 不会将任何 Python 模块传输到远程节点。 如果您的自定义模块具有依赖项,您将需要安排在您的剧本中安装它们。

例如:

- hosts: all
  tasks:
    - name: Ensure that monotonic is installed on remote host
      pip:
        name: monotonic
        state: present

    - name: Use my custom module
      mycustommodule:

(尽管根据monotonic的文档,如果您使用的是 Python 3.3 或更高版本,则不需要它;您可以使用time.monotonic代替)。

暂无
暂无

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

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