如何将 Python 包 pip 安装到虚拟环境中,并在普通 shell 中访问 CLI 命令



对于可能会干扰其他软件包的大型 Python 包,建议将它们安装到自己的虚拟环境中,并且某些 Python 包会将 CLI 命令公开给 shell。

有没有办法将这样的包pip安装到它自己的虚拟环境中, 但无需切换即可从普通外壳访问 CLI 命令 事先手动到这个虚拟环境?

这里有一个例子:当我通过以下方式安装csvkit

pip install csvkit

我有命令csvcutcsvlookcsvgrep和我 壳。但是,如果我不想在我的系统-Python中安装cvskit,并且 将其安装在虚拟环境中,例如在~/venvs/csvkit,我有csvkit仅在我手动激活环境时才可用csvkit.

有没有办法创建虚拟环境并在其中安装csvkit, 以便像csvcut这样的命令在之前激活环境本身 他们跑了?

一个仍然维护得很好的较新的工具是pipx - 在隔离环境中安装和运行Python应用程序。它的工作原理类似于pipsi:

  1. 首先安装pipx。(见 pipx 安装)
  2. 然后发布:

    pipx install csvkit
    
  3. 最后确保pipx的 bin 目录(通常~/.local/bin)在您的 PATH 中。

请注意,pipx 有额外的命令来维护和检查生成的 venv - 见pipx --help

您可以创建别名(如csvcut并将其指向source ~/venvs/csvkit/bin/activate && csvcut && source deactivate

如果此程序接受参数,则可以使用函数并在.bashrc文件中定义:

csvcut() {
#do things with parameters like $1 such as
source ~/venvs/csvkit/bin/activate
csvcut $1 $2 $3 $4 $5
deactivate
}

要调用该函数,只需使用csvcut <your_parameter>命令。

使用pipsi.以下是项目自述文件中的描述:

pipsi 将每个软件包安装到 ~/.local/venvs/PKGNAME 中,然后将所有新脚本符号链接到 ~/.local/bin 中(这些脚本可以分别通过 PIPSI_HOME 和 PIPSI_BIN_DIR env 变量进行更改)。

与 pip install --user 相比,每个 PKGNAME 都安装到自己的 virtualenv 中,因此您不必担心不同的PKGNAME具有冲突的依赖项。

它对csvkit是一种享受:

  1. 首先安装pipsi

  2. 然后发布:

    pipsi install csvkit
    
  3. 最后确保pipsi的 bin 目录(通常为~/.local/bin)在您的 PATH 中。

就是这样!现在您可以在逗号行上键入,例如

csvcut --help

在自己的虚拟环境中调用csvcut

无需手动激活 virtualenv,您的系统 Python 也不会被其他软件包污染(除了pipsi软件包)。

最新更新