0

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

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

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

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

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

4

1 回答 1

2

您的问题尚不完全清楚,但我假设您正在尝试在 octave/matlab 中运行 python 命令,并且您希望为此使用 python 虚拟环境。

不幸的是,当您system在八度范围内运行命令时,最有可能发生的情况是,这会创建一个子shell 来执行您的命令,一旦命令完成,该子shell 就会被丢弃。

你有几个选项来纠正这个问题,但我认为最简单的方法是首先激活 python 虚拟环境,然后从该环境中运行你的 octave 实例。然后,这会继承运行 octave 时存在的所有环境变量。您可以通过执行来确认这一点getenv( 'VIRTUAL_ENV' )

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

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

于 2021-04-11T16:00:01.023 回答