pipx:一款很特别的类 pip 工具

图片

前几天分享 Python 核心开发者 Brett Cannon 的文章建议时,里面有提到一个叫 pipx 的工具。之前了解不多,但是看完文档之后,发现它特别有意思,因此专门用一篇文章向大家推荐一下。

相关文章:原来我一直安装 Python 库的姿势都不对呀!

pipx 是什么?

据官网介绍,pipx 是安装并运行 Python 终端用户应用(end-user applications)的工具。终端用户应用,其实可以理解为用 Python 编写的命令行工具,可以直接从命令行调用的那种。

有点类似 Mac 下的 brew,类似 JavaScript 的 npx,和 pip 也很像,只是专门用来安装命令行工具库。

pipx 之所以存在,是因为 Python 和 PyPI 支持开发者发布带有”终端脚本入口“的代码,用户可以在命令行调用 Python 代码,使得这个 Python 包类似于一个独立的应用。

图片

官网:https://pipxproject.github.io/pipx/

pipx 的主要功能

pipx 支持如下功能:

  • 将 Python 包安全地安装在隔离环境中,同时又可以全局暴露出命令行的调用入口。这样可以避免依赖之间的冲突。
  • 列举、更新和删除使用 pipx 安装的包
  • 在临时环境中运行某个 Python 应用的最新版 pipx 需要 Python 3.6 及以上版本,同时必须已经安装好了 pip。

工具原理

如果想知道 pipx 命令背后都是怎么执行的,那么可以在传入 --verbose 参数查看。我们具体说明运行二进制文件时,是什么样的操作流程:

创建或重复使用一个共享的虚拟环境,虚拟环境中有 Python 包管理所需的库,默认路径是 ~/.local/pipx/shared/ 确保所有包管理相关的库,都更新到最新版 根据包名称、python 版本、pip 参数等属性,创建一个临时目录(或使用已缓存的目录) 在目录中通过 python-m venv 创建虚拟环境 在新建的虚拟环境中安装指定的包 调用对应的二进制文件 上面这些步骤,我们手动也可以完成。pipx 所做的,则是将整个流程自动化了!

可以使用的 Python 应用

有一些常用的 Python 工具,推荐大家尝试通过 pix 安装:

pipx install ansible  # IT automation
pipx run asciinema  # Record and share your terminal sessions, the rightway.
pipx run black  # uncompromising Python code formatter
pipx run --spec=babel pybabel --help  # internationalizing and localizing Python applications
pipx run --spec=chardet chardetect --help  # detect file encoding
pipx run cookiecutter  # creates projects from project templates
pipx run create-python-
package  # easily create and publish new Python packages
pipx run flake8  # tool for style guide enforcement
pipx run gdbgui  # browser-based gdb debugger
pipx run hexsticker  # create hexagon stickers automatically
pipx run ipython  # powerful interactive Python shell
pipx run jupyter  # web-based notebook environment for interactive computing
pipx run pipenv  # python dependency/environment management
pipx run poetry  # python dependency/environment/packaging management
pipx run pylint  # source code analyzer
pipx run pyinstaller  # bundles a Python application and all its dependencies into a single package
pipx run pyxtermjs  # fully functional terminal in the browser
pipx install shell-functools  # Functional programming tools for the shell

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版 回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版 回复关键词「m」,立即获取Python精选优质文章合集 回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

推荐阅读

2019年,大家都是怎么用 Pandas 的? 一篇文章读懂 Python 多线程 效率翻倍!再也不用手动改测试接口的参数了 一行代码弄懂数据,pandas最佳搭档就是ta了 让你赚钱更省力的 10 个开源项目!

题图:pexels,CC0 授权。