文档:https://pipx.pypa.io
源代码:https://github.com/pypa/pipx
有关与PIPSI在内的其他工具的比较,请参见与其他工具的比较。
警告
不建议通过pipx
安装pipx
。如果您想这样做,请查看pipx-in-pipx
项目,并了解那里的限制。
brew install pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
使用brew update && brew upgrade pipx
升级PIPX升级PIPX。
sudo apt update
sudo apt install pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
sudo dnf install pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
sudo pacman -S python-pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
pip
: python3 -m pip install --user pipx
python3 -m pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
使用python3 -m pip install --user --upgrade pipx
升级PIPX。
scoop install pipx
pipx ensurepath
使用scoop update pipx
升级PIPX。
# If you installed python using Microsoft Store, replace `py` with `python3` in the next line.
py -m pip install --user pipx
以上看上去与此相似的警告(甚至很可能)(甚至很可能)可能会完成:
WARNING: The script pipx.exe is installed in `<USER folder>AppDataRoamingPythonPython3xScripts` which is not on PATH
如果是这样,请转到上述文件夹,允许您直接运行PIPX可执行文件。输入以下行(即使您没有收到警告):
.pipx.exe ensurepath
这将同时将上述路径和%USERPROFILE%.localbin
文件夹添加到您的搜索路径。重新启动您的终端会话并验证pipx
确实运行。
使用py -m pip install --user --upgrade pipx
PIPX升级PIPX。
您也可以在不安装的情况下使用PIPX。可以从GitHub版本下载Zipapp,您可以使用Python 3.8+解释器调用它:
python pipx.pyz ensurepath
PIPX具有前投资支持。
可以按照此命令打印的说明可以完成外壳的完成:
pipx completions
有关更多详细信息,请参阅“安装说明”。
pipx
? PIPX是一种工具,可以帮助您安装和运行用Python编写的最终用户应用程序。它大致类似于Macos的brew
,JavaScript的NPX和Linux的apt
。
它与PIP密切相关。实际上,它使用PIP,但专注于安装和管理可以直接从命令行作为应用程序运行的Python软件包。
PIP是用于库和应用程序的通用软件包安装程序,没有环境隔离。 PIPX是专门用于应用程序安装的,因为它添加了隔离,但仍使您的外壳中的应用程序可用:PIPX为每个应用程序及其相关软件包创建一个隔离的环境。
PIPX不用PIP发货,而是安装它通常是引导系统的重要组成部分。
pipx
安装应用程序从哪里?默认情况下,PIPX使用与PIP,PYPI相同的软件包索引。 PIPX还可以从所有其他来源安装PIP罐,例如本地目录,车轮,git URL等。
Python和PYPI允许开发人员使用“控制台脚本输入点”分发代码。这些入口点使用户从命令行调用Python代码,实际上像独立应用程序一样起作用。
PIPX是一种以安全,方便且可靠的方式安装和运行这些涉及应用程序包裹中的任何数千个软件包的工具。从某种意义上说,它将Python软件包索引(PYPI)变成了用于Python应用程序的大型应用商店。并非所有的Python软件包都有入口点,但是许多包裹都有。
如果您想让您的软件包与PIPX兼容,那么您需要做的就是添加控制台脚本的输入点。如果您是诗歌用户,请使用这些说明。或者,如果您使用的是舱口,请尝试使用。
pipx
使您能够
install
命令将安装到隔离环境的软件包(“应用程序”)的CLI入口点(“应用程序”)。这保证没有依赖冲突和清洁卸载!run
命令在临时环境中运行最新版本的Python应用程序最重要的是,PIPX可以使用常规的用户权限运行,从不调用sudo pip install
(您不这样做,是吗?)。
pipx
安装包装及其应用程序您可以通过运行在全球安装应用程序
pipx install PACKAGE
这会自动创建虚拟环境,安装软件包,并将软件包的关联应用程序(输入点)添加到PATH
上的位置。例如, pipx install pycowsay
可在全球提供pycowsay
命令,但在其自己的虚拟环境中Sandboxes PyCowsay软件包。 pipx永远不需要作为sudo来执行此操作。
例子:
>> pipx install pycowsay
installed package pycowsay 2.0.3, Python 3.10.3
These apps are now globally available
- pycowsay
done! ?
>> pipx list
venvs are in /home/user/.local/share/pipx/venvs
apps are exposed on your $PATH at /home/user/.local/bin
package pycowsay 2.0.3, Python 3.10.3
- pycowsay
# Now you can run pycowsay from anywhere
>> pycowsay mooo
____
< mooo >
====
^__^
(oo)_______
(__) )/
||----w |
|| ||
您也可以从GIT存储库中安装。在这里, black
被用作示例。
pipx install git+https://github.com/psf/black.git
pipx install git+https://github.com/psf/black.git@branch # branch of your choice
pipx install git+https://github.com/psf/black.git@ce14fa8b497bae2b50ec48b3bd7022573a59cdb1 # git hash
pipx install https://github.com/psf/black/archive/18.9b0.zip # install a release
安装附加功能时必须使用带egg
的PIP语法:
pipx install "git+https://github.com/psf/black.git#egg=black[jupyter]"
如果PIPX安装的应用程序需要其他软件包,则可以使用PIPX注入添加它们。例如,如果您已安装了ipython
并要添加matplotlib
软件包,则将使用:
pipx inject ipython matplotlib
您可以通过在命令行中指定全部或在文本文件中列出它们,每行包含一个软件包或组合来注入多个软件包。例如:
pipx inject ipython matplotlib pandas
# or:
pipx inject ipython -r useful-packages.txt
这是pipx install
的替代方法。
pipx run
下载并在一次性临时环境中运行上述Python“应用程序”,此后使您的系统未触及。
当您需要运行最新版本的应用程序时,这可能很方便,但不一定希望将其安装在计算机上。
当您初始化一个新项目并要设置正确的目录结构,要查看应用程序的帮助文本时,或者只想在一次性情况下运行应用程序时,您可能需要执行此操作。然后将您的系统保持不变。
例如,博客文章如何设置一个完美的Python项目使用pipx run
与CookieCutter启动一个新项目,CookieCutter是一种从项目模板中创建项目的工具。
一个很好的附带好处是,您不必记得升级该应用程序,因为pipx run
会自动为您运行最新版本。
好吧,让我们看看这在实践中的样子!
pipx run APP [ARGS...]
这将将软件包安装在一个孤立的临时目录中,并调用该应用程序。尝试一下:
> pipx run pycowsay moo
---
< moo >
---
^__^
(oo)_______
(__) )/
||----w |
|| ||
请注意,您无需执行任何安装命令即可运行该应用程序。
应用程序名称后的任何参数将直接传递给申请:
> pipx run pycowsay these arguments are all passed to pycowsay!
-------------------------------------------
< these arguments are all passed to pycowsay! >
-------------------------------------------
^__^
(oo)_______
(__) )/
||----w |
|| ||
有时,PIPX可以消耗为应用程序提供的参数:
> pipx run pycowsay --py
usage: pipx run [-h] [--no-cache] [--pypackages] [--spec SPEC] [--verbose] [--python PYTHON]
[--system-site-packages] [--index-url INDEX_URL] [--editable] [--pip-args PIP_ARGS]
app ...
pipx run: error: ambiguous option: --py could match --pypackages, --python
为了防止此命中率--
在应用程序之前。它将使PIPX将参数转发到右逐字化的范围:
> pipx run -- pycowsay --py
----
< --py >
----
^__^
(oo)_______
(__) )/
||----w |
|| ||
重新运行相同的应用程序很快,因为PIPX以每个应用程序为基础缓存虚拟环境。缓存仅持续几天,当它们到期时,PIPX将再次使用该软件包的最新版本。这样,您可以确定您总是在不需要手动升级的情况下运行新版本的软件包。
如果应用程序名称与软件包名称不匹配,则可以使用--spec
参数指定PACKAGE
名称,并提供APP
单独运行的应用程序:
pipx run --spec PACKAGE APP
例如,Esptool软件包没有提供相同名称的可执行文件:
>> pipx run esptool
'esptool' executable script not found in package 'esptool'.
Available executable scripts:
esp_rfc2217_server.py - usage: 'pipx run --spec esptool esp_rfc2217_server.py [arguments?]'
espefuse.py - usage: 'pipx run --spec esptool espefuse.py [arguments?]'
espsecure.py - usage: 'pipx run --spec esptool espsecure.py [arguments?]'
esptool.py - usage: 'pipx run --spec esptool esptool.py [arguments?]'
取而代之的是运行该软件包通过使用--spec
:
pipx run --spec esptool esp_rfc2217_server.py
pipx run --spec esptool espefuse.py
pipx run --spec esptool espsecure.py
pipx run --spec esptool esptool.py
请注意, .py
扩展名不是您附加到可执行名称的内容。它是软件包提供的可执行名称的一部分。这可以是什么。例如,在使用Pymodbus软件包时:
>> pipx run pymodbus[repl]
'pymodbus' executable script not found in package 'pymodbus'.
Available executable scripts:
pymodbus.console - usage: 'pipx run --spec pymodbus pymodbus.console [arguments?]'
pymodbus.server - usage: 'pipx run --spec pymodbus pymodbus.server [arguments?]'
pymodbus.simulator - usage: 'pipx run --spec pymodbus pymodbus.simulator [arguments?]'
您可以这样运行可执行文件:
pipx run --spec pymodbus[repl] pymodbus.console
pipx run --spec pymodbus[repl] pymodbus.server
pipx run --spec pymodbus[repl] pymodbus.simulator
上面的PACKAGE
参数实际上是需求指示符。因此,您还可以指定特定版本,版本范围或附加版。例如:
pipx run mpremote==1.20.0
pipx run --spec esptool==4.6.2 esptool.py
pipx run --spec 'esptool>=4.5' esptool.py
pipx run --spec 'esptool >= 4.5' esptool.py
请注意,某些要求指定符必须用引号或逃脱。
您也可以从GIT存储库中运行。在这里, black
被用作示例。
pipx run --spec git+https://github.com/psf/black.git black
pipx run --spec git+https://github.com/psf/black.git@branch black # branch of your choice
pipx run --spec git+https://github.com/psf/black.git@ce14fa8b497bae2b50ec48b3bd7022573a59cdb1 black # git hash
pipx run --spec https://github.com/psf/black/archive/18.9b0.zip black # install a release
您也可以直接运行.py文件。
pipx run https://gist.githubusercontent.com/cs01/fa721a17a326e551ede048c5088f9e0f/raw/6bdfbb6e9c1132b1c38fdd2f195d4a24c540c324/pipx-demo.py
pipx is working!
就是这样!这些是pipx
提供的最重要的命令。要查看PIPX的所有文档,请运行pipx --help
或查看文档。
PIPX受PIPSI和NPX的启发。它是由乍得·史密斯(Chad Smith)创建的,并获得了贡献者的大量帮助。徽标是由@irishmorales创建的。
PIPX由志愿者团队维护(按字母顺序)
绝对欢迎问题和拉力请求!查看贡献以开始。每个通过代码库,问题跟踪器,聊天室或以其他方式与PIPX项目进行互动的每个人都将遵循PSF的行为守则。