想要使用 Octave/Matlab 从终端激活虚拟环境

Want to activate a virtual environment from terminal with Octave/Matlab

我想执行 bash 命令以使用 Linux 激活带有 Octave 的虚拟环境。我真正想做的是 运行 DeepSpeech 使用 Octave/Matlab.

我要使用的命令是 source $HOME/tmp/deepspeech-venv/bin/activate

我自己试过的代码行是system("source $HOME/tmp/deepspeech-venv/bin/activate")

我得到的输出是 sh: 1: source: not found

我在 post 上看到 回答并尝试了这个命令 setenv('PATH', ['/source $HOME/tmp/deepspeech-venv/bin/activate', pathsep, getenv('PATH')]) 但没有任何帮助它返回了同样的错误。

你的问题还不是很清楚,但我假设你想做的是 运行 python octave/matlab 中的命令,并且你想使用python 虚拟环境。

不幸的是,当你从 Octave 中 运行 一个 system 命令时,最有可能发生的是这会创建一个子 shell 来执行你的命令,一旦命令完成,它就会被丢弃。

您有多种选择来纠正此问题,但我认为最简单的方法是首先激活 python 虚拟环境,然后从该环境中 运行 您的 Octave 实例。然后,这将继承八度为 运行 时存在的所有环境变量。您可以通过执行 getenv( 'VIRTUAL_ENV' ).

来确认这一点

如果这不是一个选项,那么您可以确保所有用于 运行 python 脚本的系统命令都以对虚拟环境的调用为前缀(例如 system( 'source ./my/venv/activate; python3 ./myscript.py')).

或者,您可以尝试使用 setenv 命令从其导出的变量手动重新创建虚拟环境。