我一直在编写一些Ansible游戏来设置python virtualenv,并且在开发期间更新python包并重新启动服务器。我有问题虽然获得pip更新包。我真的不在乎这是怎么做的,但我更喜欢在开发过程中只是在virtualenv中添加python路径的路径然后只是重新启动服务器,但我还没有想出如何在Ansible中做到这一点。
所以我的问题是如何设置一个本地git repo,它可以安装到virtualenv的site-packages中,也可以使用正确的virtualenv设置Ansible到sys.path.insert的位置。
目前我正在尝试:
sudo pip install ~/workspace/python-repo
在我安装软件包之前,我将一个我从Authenticator重命名的类重命名为像Authen这样的完全错误的类。该课程在全新安装期间显示Authen。然后我将类名更改回正确的名称(Authenticator),碰撞版本并运行
sudo pip install ~/workspace/python-repo --upgrade
但在检查site-packages中的实际文件后,它仍会显示Authen名称而不是更新的文件。
如何在开发过程中使用本地仓库并在我的环境中获取即时更新文件?以及通过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}
答案 0 :(得分:11)
我将把这个作为正确答案发给其他所有人,让他们回过头来参考。
目前我有一个Ansible游戏,通过安装本地python包然后创建virtualenv并将所有内容安装到开发中来设置环境。首先,在设置virtualenv并将本地git repo安装到环境中时,我在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游戏来部署本地更改。我使用这些任务。
- 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开发环境,我认为这是一个可接受的过程。