【问题标题】:Ansible create a virtualenv using the venv moduleAnsible 使用 venv 模块创建一个 virtualenv
【发布时间】:2017-07-23 13:56:05
【问题描述】:

如何使用 Ansible 使用 Python3 标准库中的 venv 模块创建虚拟环境?

手动创建一个 venv(虚拟环境):

python3 -m venv <venv-name>

如何使用 Ansible 做到这一点?

【问题讨论】:

  • @kyslik 我已经多次阅读文档,搜索了 SO,并尝试在我的计算机上运行。我知道 ansible pip 模块中的 virtualenv_command 选项。然而,ansible 给出了一个错误,python3 -m venv 不是一个有效的命令。所以我很茫然。
  • @kyslik 不幸的是,如果你不给 pip 一个名字,ansible 会抛出一个错误。
  • 请注意,ansible 的 python 3 支持可能仍然不稳定

标签: python-3.x ansible python-venv


【解决方案1】:

我今晚遇到了同样的问题,发现指定解释器的完整路径(包括参数)对我有用(至少在 ansible==2.2.2.0 中是这样):

- pip:
     requirements: /website/requirements.txt
     virtualenv: /opt/website-venv
     virtualenv_command: /usr/bin/python3.6 -m venv

- pip:
    requirements: /opt/project/requirements_prod.txt
    virtualenv: /opt/.virtualenv/project_env
    virtualenv_python: python3

【讨论】:

  • 使用 python 可执行文件的完整路径很重要。否则 ansible 说它在 PATH 目录中找不到它。
  • 仅供参考,在 ansible=2.7 中使用 python3 -m venv 你必须使用: virtualenv_command: -m venv 并且不包括 virtualenv_python。见:docs.ansible.com/ansible/latest/modules/pip_module.html
【解决方案2】:
# Install specified python requirements in indicated (virtualenv).
- pip:
  requirements: /my_app/requirements.txt
  virtualenv: /my_app/venv

如果 python3 确实是不稳定的,你可以指定你想使用哪个版本的 python:

# Install specified python requirements in indicated (virtualenv).
- pip:
  requirements: /my_app/requirements.txt
  virtualenv: /my_app/venv
  virtualenv_command: virtualenv-2.7

我认为这回答了你的问题。

【讨论】:

  • 语法有问题。而且您似乎没有理解 Python 3 支持这句话的含义。这与 virtualenv 中的 Python 版本无关,而是 Ansible 使用哪个版本的 Python 来运行其模块。你没有在你的例子中设置它。
  • 我正在使用 python 标准库中的 venv 模块来创建虚拟环境。不是 virtualenv 模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多