Ansible创造一个virtualenv
你如何使用ansible为特定的python版本创build一个virtualenv。 在标准库中是否有命令?
我想像这样的东西:
- virtualenv: dest=venv python_version:/usr/bin/python3
我有时经历过一些指定virtualenv_command
不正常的行为(例如:即使我指定用virtualenv-3.4
运行命令,在我的virtualenv中获得一个python 2.7可执行文件。
如果遇到这个问题, 可以使用command
模块手动创buildvirtualenv:
- name: Manually create the initial virtualenv command: virtualenv /user/home/venvs/myenv -p python3.4 creates="/user/home/venvs/myenv"
(注意:通过指定creates
这个命令只会在virtualenv不存在于/user/home/venvs/myenv
的情况下运行)。
然后,您可以使用pip
命令正常安装您的需求:
- name: Install requirements pip: requirements=/my_app/requirements.txt virtualenv=/user/home/venvs/myenv
更新
我发现指定virtualenv_python
(在Ansible 2.0+中可用)似乎也适用于上述情况。 例如:
- name: Install requirements pip: requirements: /my_app/requirements.txt virtualenv: /user/home/venvs/myenv virtualenv_python: python3.4
(有了这个你不需要先手动创buildvirtualenv)
你可以使用pip
模块和一个特定的virtualenv
二进制文件:
- pip: virtualenv=/path/to/venv virtualenv_command=/path/to/virtualenv3 ...
用ansible 2.0你可以用virtualenv_python
为你的virtualenv指定一个python版本
例如:
- name: Initiate virtualenv pip: virtualenv="{{ virtualenv_dir }}" virtualenv_python=python3.4 requirements={{ app_dir }}/requirements.txt