python - 如何为 Ansible 选择正确的安装过程?
问题描述
当一个人想要安装 Ansible 时,他们有不同的选择:安装 Ansible。
假设我有一个安装了更新的全新 CentOS 7 虚拟机。截至目前,我可以选择使用以下方式安装:
- 系统的包管理器:
$ sudo yum install ansible
- Python 的包管理器:
$ pip install --user ansible
或者
$ sudo pip install ansible
- Python 在虚拟环境中的包管理器:
$ python -m virtualenv ansible
$ source ansible/bin/activate
$ pip install ansible
- Git 通过从存储库中克隆源代码:
git clone https://github.com/ansible/ansible.git
考虑到我还不太明白拥有虚拟环境意味着什么,
- 有人可以描述列出的方法之间的实际差异吗?
- 哪一种是安装 Ansible 的“最佳”方式?
- 在什么情况下列出的每种方法都更适合?
谢谢!
解决方案
yum
除非存在某种本机依赖项,否则通常不鼓励通过安装 python 包。yum
使用over安装没有任何好处pip
。- 我们通常建议不要使用全局包管理器来安装包。我们通常做的唯一例外是真正的全局包(pip、wheel、setuptools、云提供商 cli、virtualenv)。我们在设置 docker 环境时也使用这种方法,因为 docker 仅限于单个应用程序配置。我们通常远离这种方法,因为依赖操作系统提供的 python 可能是善变的。例如,CentOS 6 附带了一个无法升级的非常旧的 python 版本,因此您必须从源代码编译和构建 python。如果您有多个需要从同一服务器运行但具有不同 python 版本要求的应用程序,则此方法也不起作用。
- 使用虚拟环境几乎总是正确的选择,应该是默认选择。它将您的项目的依赖关系与可能驻留在同一虚拟机或计算机上的其他项目隔离开来。这里的关键词是隔离。您可以隔离特定版本的库和特定于特定应用程序的 python,并让它们在同一实例上并行运行。
- 当您需要尚未发布到 pypi 的特定修补程序或功能时,从 git 安装 pip。
推荐阅读
- powershell - 为新手使用 powershell
- ruby-on-rails - 如何使用 google-cloud-storage 创建文件?
- azure-devops-rest-api - 使用 powershell 或 git 列出拉取请求的更改文件
- azure - Azure AD App 注册用户角色未反映
- twig - 无法访问全局数据或宏内的宏
- python - 在 Kubernetes 上部署具有多个 URL 的 Flask 应用程序
- java - 无法将 Spring Boot 应用程序部署到 Heroku
- python - 使用 Pandas 在 Python 中将子查询传递给动态查询的最佳实践
- sql - SQL如何在两个不同的列上带来两个不同条件的两个结果
- jmeter - JMeter Http请求在循环控制器中未按预期工作