安赛尔创建了一个虚拟世界

如何使用 anable 为特定的 Python 版本创建 viralenv。在可变标准库中有命令吗?

我想要这样的东西:

- virtualenv: dest=venv python_version:/usr/bin/python3
76301 次浏览

你可以使用 pip模块和一个特定的 virtualenv二进制:

- pip: virtualenv=/path/to/venv virtualenv_command=/path/to/virtualenv3 ...

在指定 virtualenv_command时,我有时会遇到一些不稳定的行为(例如: 在我的 viralenv 中获得一个 python 2.7可执行文件,尽管我指定用 virtualenv-3.4运行该命令。

如果遇到这个问题,您可以使用 command模块手动创建 viralenv:

- name: Manually create the initial virtualenv
command:
cmd: virtualenv /user/home/venvs/myenv -p python3.4
creates: "/user/home/venvs/myenv"

(注意: 通过指定 creates,该命令将仅在 /user/home/venvs/myenv不存在 viralenv 的情况下运行)。

然后您可以使用 pip命令正常安装您的需求:

- name: Install requirements
pip:
requirements=/my_app/requirements.txt
virtualenv=/user/home/venvs/myenv

更新

我发现,在上述情况下,指定 virtualenv_python(可在 Ansible2.0 + 中获得)似乎也是可行的。例如:

- name: Install requirements
pip:
requirements: /my_app/requirements.txt
virtualenv: /user/home/venvs/myenv
virtualenv_python: python3.4

(有了这个,您不应该需要首先手动创建 viralenv)

使用 ansible2.0,您可以使用 virtualenv_python为 Virtual alenv 指定一个 python 版本

例如:

- name: Initiate virtualenv
pip: virtualenv="\{\{ virtualenv_dir }}"
virtualenv_python=python3.4
requirements=\{\{ app_dir }}/requirements.txt

关于森托斯 -7:

可变版本: 2.9(这个脚本应该适用于可变版本2 +)

完成可视化脚本创建 Python 3.6虚拟环境

  - name: Enable EPEL Repository on CentOS 7
yum:
name: epel-release
state: latest




- name: check if virtualenv library already installed or not
stat:
path: /usr/bin/virtualenv
register: pip_virtualenv_installed
    



- name: Download Pip-Installer
get_url:
url: https://bootstrap.pypa.io/pip/2.7/get-pip.py
dest: /tmp/get-pip.py
when: pip_virtualenv_installed.stat.exists == False




- name: Install pip
shell: /usr/bin/python /tmp/get-pip.py
when: pip_virtualenv_installed.stat.exists == False




- name: Install virtualenv module
pip:
name: virtualenv
when: pip_virtualenv_installed.stat.exists == False




- name: Install Python 3.6
yum:
name:
- python36
- python36-devel
- python36-libs
- python3-setuptools
- gcc
- gcc-c++
state: present




- name: Create Python3-virtual environment folder
file:
name: /opt/python3-virtualenv
state: directory




- name: Initiate virtualenv
pip:
virtualenv: /opt/python3-virtualenv
virtualenv_python: python3.6
requirements: /opt/python3-virtualenv/requirements.txt