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

问题描述 投票:3回答:2

对于可能干扰其他软件包的较大Python软件包,建议将它们安装到自己的虚拟环境中,一些Python软件包将CLI命令暴露给shell。

有没有办法将这样的软件包安装到自己的虚拟环境中,但是可以从普通shell访问CLI命令而无需事先手动切换到此虚拟环境?

这里有一个例子:当我安装csvkit

pip install csvkit

我有命令csvcutcsvlookcsvgrep和我的shell中提供的其他命令。但是,如果我不想在我的System-Python中安装cvskit并将其安装在虚拟环境中,比如在~/venvs/csvkit,我只有在手动激活环境csvkit时才能使用csvkit。

有没有办法创建虚拟环境并在其中安装csvkit,以便像csvcut这样的命令在运行之前自己激活环境?

python path pip command-line-interface virtualenv
2个回答
0
投票

您可以创建别名,例如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>命令。


0
投票

使用pipsi。这里是项目自述文件的描述:

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

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

它适用于csvkit

  1. 首先安装pipsi
  2. 然后发出: pipsi install csvkit
  3. 最后确保pipsi的bin目录(通常是~/.local/bin)在你的PATH中。

而已!现在您可以输入命令行,例如

csvcut --help

在自己的virtualenv中称csvcut

没有必要手动激活virtualenv,你的系统Python不会被其他软件包污染(除了pipsi软件包一劳永逸)。

© www.soinside.com 2019 - 2024. All rights reserved.