在开发过程中让Ansible pip更新python包

2024-05-19 09:16:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一些Ansible剧本来安装python virtualenv,并在开发过程中更新python包并重新启动服务器。我有问题,虽然让pip更新一个包。我真的不在乎这是怎么做的,但我更希望在开发过程中在virtualenv中将路径添加到python路径,然后重新启动服务器,但我还没有找到在Ansible中如何做到这一点。

因此,我的问题是如何设置本地git repo,它要么安装到virtualenv的站点包中,要么设置为Ansible to sys.path.insert the location of the repo using the correct virtualenv。

目前我正在尝试:

sudo pip install ~/workspace/python-repo

在安装包之前,我将一个类从Authenticator重命名为完全错误的Authen。类在新安装期间显示Authen。然后我将类名改回正确的名称(Authenticator),修改版本并运行

sudo pip install ~/workspace/python-repo --upgrade

但是在检查了站点包中的实际文件之后,它仍然显示Authen名称,而不是更新的文件。

我如何做到这一点,以便在开发期间使用本地repo,并在我的环境中获取即时更新的文件?以及通过Ansible使这成为一个可重复的过程。

这是我在Ansible的工作。我的第一个剧本是建立环境,我只想运行一次。

- name: Install python-repo
local_action: pip name=${python_root}
                  virtualenv=${working_dir}/development

${python_root}只是python项目的位置,当然工作目录是新的virtualenv设置。

然后不知何故,我想要一个开发剧本来更新virtualenv中的python repo。这是我目前所掌握的,但也不管用。

- name: Update python-repo
local_action: pip  name=${python_root}
                   virtualenv=${working_dir}/development
                   state=latest

- name: Restart services.
  local_action: service name=${item} state=restarted
  with_items: ${services} 

Tags: pip文件thename服务器virtualenv过程local
1条回答
网友
1楼 · 发布于 2024-05-19 09:16:07

我要把这个作为正确的答案贴出来,让其他人都可以参考。

目前,我有一个Ansible剧本,通过安装本地python包,然后创建一个virtualenv并将所有内容安装到其中进行开发,来建立一个环境。首先,在设置virtualenv并将本地git repo安装到ansibe中使用这些任务的环境中。

- name: Source virtualenvwrapper.
  local_action: shell /usr/local/bin/virtualenvwrapper.sh 
                    executable=/bin/bash

- name: Set Enviroment to working directory.
  local_action: shell export WORKON_HOME=${working_dir}

- name: Set pip to use working virtual enviroment.
  local_action: shell export PIP_VIRTUALENV_BASE=$WORKON_HOME

- name: Create new virtualenv in development.
  local_action: pip requirements=${virtual_requirements} 
                  virtualenv=${working_dir}/development

- name: Install python-repo as editable 
  local_action: pip name=${python_root}
                  virtualenv=${working_dir}/development
                  extra_args='-e ${python_root}' 

现在我开始开发,当我准备好测试并运行它时,我使用另一个Ansible play部署本地更改。我用这些任务。

- name: Update python-repo
  local_action: pip name=${python_root}
                  virtualenv=${working_dir}/development
                  extra_args='--upgrade'

- name: Restart services.
  local_action: service name=${item} state=restarted
  with_items: ${services}

这将立即接受python更新并重新启动服务器。我在php开发环境中花了很长时间来思考这个问题,只需要按F5接受更改。我想要一个良好的python开发环境,我认为这是一个可以接受的过程。

相关问题 更多 >

    热门问题