使用 virtualenv 使用 ansible 下载模型 python3

downlaod model python3 with ansible using virutal env

目前正在编写一个 ansible playbook 来安装 rasa... 使用虚拟环境

python3.7 -m venv ./venv
source ./venv/bin/activate 
....
....
pip3 install -r requirements.txt
python3 -m spacy download en_core_web_md                                        
python -m spacy link en_core_web_md en  

spacy 的一些背景信息https://spacy.io/models.

在 playbook 中,我能够使用以下列表安装要求...playbook 完美运行....

- name: Download pip installer                                              
  get_url:                                                                  
    url: https://bootstrap.pypa.io/get-pip.py                               
    dest: /tmp/get-pip.py                                                   
                                                                               
- name: Install pip                                                         
  shell: |                                                                  
    /usr/bin/python3 /tmp/get-pip.py                                         
                                                                             
- name: Create app folder                                                   
  file:                                                                     
    name: /opt/app                                                
    state: directory                                                        
    recurse: yes                                                            
                                                                               
- name: Install virtualenv module                                           
  pip:                                                                      
    name: virtualenv                                                        
    state: latest                                                           
                                                                                
- name: Create virtualenv for app                                           
  pip:                                                                      
    requirements: /opt/app/requirements.txt                       
    virtualenv: /opt/app/appenv

我想念的是 /opt/app/appenv 中执行的最后两部分......

python3 -m spacy download en_core_web_md                                        
python -m spacy link en_core_web_md en 

你实际上已经知道 virtualenv 中 python 可执行文件的路径,因为它是 virtualenv 目录 + bin/python;您需要注意的是操作的幂等性,以防止 spacy 在后续的剧本运行中尝试重新执行这些命令

  - name: download en_core_web_md
    command: /opt/app/appenv/bin/python -m spacy download en_core_web_md                                        
    args:
      creates: /whatever/file/the download command/creates

  - name: link en_core_web_md
    command: /opt/app/appenv/bin/python -m spacy link en_core_web_md en
    args:
      creates: /whatever/file/link/creates

我省略了将 virtualenv 目录提取到 vars: 但我推荐它,因为它也可能在 creates: 中被引用