使用 Ansible 自动化安装 pyenv + pyenv-virtualenv,支持 OS X 和 Debian 哦

2017-06-20 10:45:04 +08:00
 dylanninin

不知大家是如何安装 pyenv,以及 pyenv-virtualenv 的。

昨天看到 说说我对 Python 装饰器的理解 - V2EX 后,打算重新搭建下 Python 开发环境。之前工作中用 virtualenv + virtualenvwrapper 较多,自从 Ruby 环境管理工具从 rvm 更换到 rbenv 后,想一想也是时候使用 pyenv 了。

现在 DevOps 已全面往 ansible 迁移,对 rbenv 也熟悉,所以想着直接用 Ansible 来安装初始化;意外的是,遇到的问题还挺多(相反,使用 ansible-rbenv 就没有遇到什么问题)。特此发贴,希望对大家有所帮助。

使用 ansible-pyenv

GitHub 上搜索到 https://github.com/dirn/ansible-pyenv 这个项目,最近更新是 2 年以前,问题多到不可用,现在做了修复,Travis-CI 也跑通了(只是慢得无法仍受)。

目前暂未合并,要使用可以按以下步骤:

$ # 1. clone ansible-pyenv into your roles, and name dirn.pyenv
$ git clone https://github.com/dylanninin/ansible-pyenv /path/to/your/ansible/roles/dirn.pyenv
$
$ # 2. add python playbook, see python.yml
$ cat python.yml
#!/usr/bin/env ansible-playbook
---
- name: deploy python env
  hosts: all
  roles:
    # https://github.com/dirn/ansible-pyenv
    - role: dirn.pyenv
      pyenv_runcom: ~/.bashrc
      pyenv_versions:
        - 2.7.11
        - 3.5.3
      pyenv_default_versions:
        - 3.5.3
      pyenv_project_versions:
        - 3.5.3
$
$ # 3. edit your inventory, see inventory
$ cat inventory
[vagrant]
vagrant-1404
vagrant-1604

[local]
localhost ansible_connection=local
$
$ # 4. layout of current directory
$ tree -L 2
.
├── inventory
├── python.yml
└── roles
    └── dirn.pyenv

2 directories, 2 files
$ # 5. just play it with specified host, localhost as example
$ ansible-playbook python.yml -l localhost

这样就可以自动化安装 pyenv、pyenv-virtualenv 了。当然,事先需要安装 Ansible

另外,dirn.pyenv 中可能有一些不合理的地方,欢迎大家提建议。

题外话

https://github.com/pyenv/pyenv 上安装 pyenv 已经足够简单,似乎不足以使用 Ansible 等自动化工具,但 Ansible 带来的变化其实非常大,主要是:

有机会专门介绍下 Ansible。

参考

2527 次点击
所在节点    Python
4 条回复
xiaomeimei
2017-06-20 11:20:06 +08:00
不错不错!!
xiaomeimei
2017-06-20 11:21:18 +08:00
不过我现在用 docker
lzjun
2017-06-20 11:21:38 +08:00
有机会专门介绍下 redmine
descusr
2017-06-20 11:25:28 +08:00
是啊是啊,我也想看看这方面的介绍

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369736

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX