python - 在开发过程中使用 Ansible pip 更新 python 包

标签 python pip ansible

我一直在编写一些 Ansible 脚本来设置 python virtualenv,也在开发过程中更新 python 包并重新启动服务器。虽然让 pip 更新包,但我遇到了问题。我真的不在乎这是如何完成的,但我更喜欢在开发过程中将路径添加到 virtualenv 中的 python 路径,然后重新启动服务器,但我还没有想出如何在 Ansible 中做到这一 pip 。

所以我的问题是如何设置一个本地 git 存储库,它要么安装到 virtualenv 的站 pip 包中,要么将 Ansible 设置为 sys.path.insert 使用正确的 virtualenv 的存储库的位置。

目前我正在尝试做:

sudo pip install ~/workspace/python-repo

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

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

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

我怎样才能做到这一 pip ,以便在开发过程中使用本地存储库并在我的环境中获得即时更新的文件?以及通过 Ansible 使其成为一个可重复的过程。

这是我在 Ansible 中尝试做的事情。我的第一个任务是设置我只想运行一次的环境。

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

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

然后我想要一个开发游戏来更新 virtualenv 中的 python 存储库。这是我目前所拥有的,但这也不起作用。

- 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} 

最佳答案

我会将此作为正确答案发布,供其他人引用。

目前我有一个 Ansible play,它通过安装本地 python 包来设置环境,然后创建一个 virtualenv 并将所有东西安装到其中以进行开发。首先设置 virtualenv 并将本地 git 存储库安装到环境中,我在 Ansible 中使用这些任务。

- 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 开发环境,我认为这是一个可以接受的过程。

关于python - 在开发过程中使用 Ansible pip 更新 python 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18766646/

相关文章:

python - 让 Ansible 信任我在 macOS 和 CentOS 上的自定义 CA

json - 可靠的 : multy loop into json file

python - 在 Pandas pivot_table 中排序

python - 在python中有条件地匹配两个数据库

Python PIP 安装抛出 TypeError : unsupported operand type(s) for -=: 'Retry' and 'int'

python - 如何查找特定模块的包名称?

azure - 安装 Azure 对 Ansible 的支持

python - 如何设置和保留 Python 2 字符串中字符的属性?

python - 如何从 Dataframe 中检索具有最近日期的数据?

python3 ModuleNotFound