繁体   English   中英

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

[英]How to pip-install Python package into virtual env and have CLI commands accessible in normal shell

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

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

这里是一个例子:当我通过安装csvkit时

pip install csvkit

我的csvcut有命令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还有其他命令来维护和检查生成的venvs-请参阅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具有PKGNAME的冲突。

它对csvkit

  1. 首先安装pipsi
  2. 然后发出:

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

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

csvcut --help

它在自己的virtualenv中调用csvcut

无需手动激活virtualenv,并且您的系统Python不会被其他软件包(除了pipsi软件包一劳永逸)所污染。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM