文檔: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的行為守則。