Ответ 1
Источник только добавляет virtualenvwrappers к вызываемой оболочке, после чего вы немедленно выходите. В любом случае, я бы не использовал virtualenvwrapper для этого. Вызовите virtualenv
напрямую.
Я предоставляю машину, использующую возможность использования. Мне удалось установить virtualenv и virtualenvwrapper на vm. Тем не менее, я не могу создать virtualenv на vm.
Я пытаюсь использовать
- name: create virtualenv test
shell: >
executable=/bin/zsh
source `which virtualenvwrapper.sh` && mkvirtualenv test
register: run_cmd
и
- name: create virtualenv test
action: command mkvirtualenv test
но не повезло. Любые идеи?
Источник только добавляет virtualenvwrappers к вызываемой оболочке, после чего вы немедленно выходите. В любом случае, я бы не использовал virtualenvwrapper для этого. Вызовите virtualenv
напрямую.
Вы можете создать среду, использующую mkvirtualenv, как это. Я надеялся, что смогу использовать toggleglobalsitepackages
, но я обнаружил, что переключение не очень удобно в автоматическом сеансе.
- name: Make a virtualenv
shell: . /usr/share/virtualenvwrapper/virtualenvwrapper.sh && mkvirtualenv {{ venv }}
args:
executable: /bin/bash
creates: "{{ venvabs }}"
В дополнение к отличному ответу @SiggyF, я хотел бы добавить: В случае, если окажется, что эта непонятная задача не удалась, поскольку это происходит со мной, вы можете использовать функцию failed_when
(возможно, 1.4 +):
- name: Make virtualenv
shell: "./usr/share/virtualenvwrapper/virtualenvwrapper.sh && mkvirtualenv {{ project }} --python={{ python }} --no-site-packages"
args:
executable: /bin/bash
creates: "{{ virtualenv_dir }}/{{ project }}"
register: mkvirtualenv
failed_when: 'mkvirtualenv.changed and "New python executable" not in mkvirtualenv.stdout'