如何在调用之前从多个虚拟环境运行脚本而不激活虚拟环境?

2024-04-30 02:48:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我不得不使用两个不兼容的python包版本:使用nice cli的较新版本和第三方编排工具使用的pythonapi的较旧版本,后者也是使用cli的python包。因此,我需要有两个独立的虚拟环境。另外,我想从我当前的一次性虚拟环境(第三个)运行python解释器。你知道吗

所有三个命令(package cli、orchestration tool cli和python解释器)都将从用户处调用,并且必须在没有激活/工作目录更改或其他施法的情况下随时可用。另外,我不想涉猎cli脚本的内容,所以让它们只为这个问题而读/运行。你知道吗

从我的观点来看,有几个选项可以实现期望的行为。你知道吗

A。添加到我的.bash_profile脚本行

export PATH=venv_throwaway/bin:venv_cli/bin:venv_orchestration_tool/bin:$PATH

这个解决方案需要手动步骤为每一个工具,我想用这种方式。此外,该解决方案还存在名称空间重叠问题。bin我想用这种方式使用的每个新cli的目录都应该小心地放在venv_throwaway/bin之后,至少因为否则new_cli/bin/python会在我的venv_throwaway/bin/python解释器之前。此外,如果其他一些cli具有不兼容的公共依赖关系,那么我必须强制正确的路径放置顺序,这是一个负担。你知道吗

B。将可执行文件符号链接到/usr/local/bin以用于我希望以这种方式使用的每个工具。这个解决方案几乎是完美的,除了它需要手动步骤。你知道吗

B'。使用可执行文件的完整venv路径调用cli(例如~/.virtualenvs/awscli/bin/aws)。看起来很像选项B特别是如果我将使用别名来缩短venv路径。你知道吗

C。制作我自己的python包我的\u awesome \u cli安装程序,它自动执行B中的手动步骤。几乎完美,只是它有NIH问题。你知道吗

有没有其他方法可以达到期望的行为?我应该使用什么选项(ABC)来执行?你知道吗


Tags: 工具路径版本clibinvenv选项方式