别再 pip install 了!一个绝佳的包管理器:pipx

在Python开发过程中,我们常常需要安装各种各样的工具库。有些库是项目级别的,比如Django或者Flask,而有些库是我们在整个系统中都可能用到的命令行工具,比如black、flake8、httpie等。对于后者,传统的pip安装方式可能会引发一些版本冲突或者环境污染的问题。这时,pipx就成了我们的救星。

什么是pipx?

pipx是一个用于安装和管理Python命令行工具的工具。它的主要优势在于可以将每个工具安装在一个隔离的虚拟环境中,同时又可以全局调用这些工具,既解决了版本冲突的问题,又保持了系统的整洁。

核心概念

  1. 虚拟环境:pipx会为每个安装的工具创建一个独立的虚拟环境。
  2. 全局可用:尽管工具被安装在独立的虚拟环境中,但pipx会创建一个全局可访问的命令链接,使得你可以像平常一样使用这些工具。

原理简述

pipx的工作原理可以简化为以下几个步骤:

  1. 创建一个新的虚拟环境。
  2. 在这个虚拟环境中安装指定的命令行工具。
  3. 将工具的可执行文件链接到全局环境,使其可全局调用。

这样做的好处是,每个工具都在其独立的环境中运行,不会干扰其他工具和项目的依赖。

安装pipx

在开始使用pipx之前,我们需要先安装它。安装pipx非常简单,只需要运行以下命令:

python3 -m pip install --user pipx
python3 -m pipx ensurepath

确保路径已添加到系统PATH后,重新启动终端,你就可以开始使用pipx了。

使用pipx安装工具

下面通过几个案例来展示pipx的使用。

案例一:安装httpie

httpie是一个非常方便的HTTP客户端工具,用于发起HTTP请求。我们可以用pipx轻松安装它:

pipx install httpie

安装完成后,你可以像普通命令行工具一样使用httpie:

http GET https://api.github.com

案例二:安装black

black是一个流行的代码格式化工具。我们同样可以用pipx安装它:

pipx install black

安装完成后,可以直接使用black格式化你的Python代码:

black myscript.py

案例三:安装和管理多个工具

假设我们还需要安装flake8和mypy,使用pipx非常简单:

pipx install flake8
pipx install mypy

要查看已安装的所有工具,可以使用以下命令:

pipx list

案例四:升级和卸载工具

升级某个工具也非常方便:

pipx upgrade httpie

如果不再需要某个工具,可以使用以下命令卸载:

pipx uninstall httpie

高级用法

pipx还有一些高级用法,比如运行未安装的工具,或者安装某个特定版本的工具。

运行未安装的工具

有时候我们只需要临时运行一个工具,而不想安装它。pipx允许我们直接运行未安装的工具:

pipx run cowsay "Hello, pipx!"

安装特定版本的工具

如果需要安装特定版本的工具,可以这样做:

pipx install black==21.9b0

pipx是管理Python命令行工具的强大工具,解决了很多版本冲突和环境污染的问题。

### 使用 `pipx` 安装 `pytest` 并避免 `externally-managed-environment` 错误 #### 背景说明 当尝试在一个包管理器(如 `pacman`, `apt`, 或其他系统级工具)维护的环境中安装 Python 包时,可能会遇到 `This environment is externally managed` 的错误提示。这是因为当前环境被外部工具严格控制,不允许直接修改其内容[^1]。 为了规避这一问题并实现独立于系统环境的包管理,推荐使用虚拟环境或专门设计用于隔离应用及其依赖的工具——例如 `pipx`。 --- #### 解决方案:通过 `pipx` 安装 `pytest` ##### 什么是 `pipx` `pipx` 是一种轻量级工具,旨在帮助用户安全地安装和运行 Python 应用程序而不污染全局环境。它会自动创建一个虚拟环境来存储目标应用程序及其依赖项,并提供便捷的方式调用这些工具。 ##### 步骤解析 1. **确认已安装 `pipx`** 如果尚未安装 `pipx`,可以通过以下命令完成安装: ```bash python -m pip install --user pipx ``` 随后将其路径添加到系统的 PATH 中: ```bash export PATH="$PATH:$HOME/.local/bin" ``` 2. **验证 `pipx` 是否可用** 运行以下命令以测试 `pipx` 是否成功配置: ```bash pipx --version ``` 3. **使用 `pipx` 安装 `pytest`** 执行如下命令即可安装 `pytest` 及其所需依赖至单独的虚拟环境中: ```bash pipx install pytest ``` 4. **运行 `pytest`** 成功安装后,可以直接通过命令行调用 `pytest`: ```bash pytest --version ``` 由于 `pipx` 自动处理了虚拟环境的设置与隔离工作,因此可以有效避开 `externally-managed-environment` 报错问题[^1]。 --- #### 可能性分析 采用 `pipx` 方案具有以下几个优势: - **环境隔离** 每个通过 `pipx` 安装的应用都会拥有专属的虚拟环境,从而减少不同项目间潜在冲突的风险。 - **简化操作流程** 用户无需手动创建、激活以及管理多个虚拟环境;所有复杂过程均由 `pipx` 处理完毕。 - **增强安全性** 不会对系统范围内的 Python 环境造成任何更改,保障整体稳定性的同时也便于后续卸载清理。 然而需要注意的是,在某些极端情况下(比如主机完全禁用了用户空间执行权限),即使借助像 `pipx` 这样的解决方案也可能无法正常运作。不过对于绝大多数常规场景而言,此方法应当能够满足需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西坡不是东坡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值