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