Possibilité de créer une virtualenv

comment créer un virtualenv pour une version python spécifique en utilisant ansible. Y a-t-il une commande dans la bibliothèque standard?

je voudrais quelque chose comme:

- virtualenv: dest=venv python_version:/usr/bin/python3
41
demandé sur user204088 2014-10-16 14:30:06

3 réponses

j'ai parfois eu un comportement erratique en spécifiant virtualenv_command (par exemple: obtenir un exécutable Python 2.7 dans mon virtualenv même si j'ai spécifié d'exécuter la commande avec virtualenv-3.4.

si vous éprouvez ce problème, vous créer le virtualenv manuellement avec l' command module:

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

(note: en spécifiant creates cette commande ne s'exécute que si un virtualenv n'existe pas à /user/home/venvs/myenv).

Ensuite, vous pouvez installer vos exigences comme d'habitude avec le pip commande:

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

mise à Jour

j'ai trouvé que spécifier le virtualenv_python (disponible en Ansible 2.0+) semble également fonctionner dans le cas indiqué ci-dessus. Par exemple:

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

(avec ceci vous ne devriez pas avoir besoin de créer manuellement le virtualenv en premier)

50
répondu toast38coza 2016-03-02 08:24:55

Vous pouvez le faire avec le pip module et un virtualenv binaire:

- pip: virtualenv=/path/to/venv virtualenv_command=/path/to/virtualenv3 ...
14
répondu Schnouki 2014-10-16 10:35:04

avec ansible 2.0 vous pouvez spécifier une version python pour votre virtualenv avec virtualenv_python

Par exemple:

- name: Initiate virtualenv
  pip: virtualenv="{{ virtualenv_dir }}" 
       virtualenv_python=python3.4
       requirements={{ app_dir }}/requirements.txt
6
répondu Tristan 2016-01-25 11:55:38