Если у вас уже есть путь к папке пользователя и установлены соответствующие разрешения, вы можете напрямую использовать модуль Ansible pip
для создания виртуальной среды в этой папке и установки пакетов. Итак, IIUC вам не требуются следующие задачи
Create Python virtual env
- вместо этой задачи вы можете просто добавить параметр
virtualenv_command
в модуль pip
, чтобы создать виртуальную среду (если она еще не существует)
Activate env
(х2)
- если вы хотите установить пакеты в виртуальную среду с помощью модуля Ansible
pip
, тогда эти 2 задачи не требуются
Также вы можете использовать параметр virtualenv_site_packages
, чтобы исключить глобальные пакеты в вашей виртуальной среде. Вам не нужно использовать параметр extra_args
для этого.
Если вы хотите установить одиночный пакет в виртуальной среде, то вы можете заменить свои последние 3 задачи следующей задачей
tasks:
- name: Create Python virtual env and install one package inside the virtual env
pip:
name: setuptools==36.1
virtualenv: /path/to/ckan/user/home/folder # <--- path to user's home folder*
virtualenv_command: virtualenv
virtualenv_site_packages: no # <---- added this parameter to exclude site packages
virtualenv_python: python3.7
Если вы хотите установить много пакетов из requirements-docs.txt
, то вы можете использовать этот подход
tasks:
- name: Create Python virtual env and install multiple packages inside the virtual env
pip:
requirements: /path/to/ckan/user/home/folder/requirements-docs.txt
virtualenv: /path/to/ckan/user/home/folder # <--- path to user's home folder*
virtualenv_command: virtualenv
virtualenv_site_packages: no # <---- added this parameter to exclude site packages
virtualenv_python: python3.7
*
домашняя папка пользователя должна существовать до выполнения этой задачи