所以我试图在Qt中使用Popen来执行一个shell,我想在其中激活一个名为“alphapose”的conda虚拟环境,然后执行推理,py:
QString srtttt = "conda activate alphapose;cd;cd AlphaPose-pytorch-1.11 ;python scripts/demo_inference.py ";
FILE* fp = popen(srtttt.toLocal8Bit().data(), "r");
然而它告诉我
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run
$ conda init <SHELL_NAME>
Currently supported shells are:
- bash
- fish
- tcsh
- xonsh
- zsh
- powershell
See 'conda init --help' for more information and options.
我知道下一步是 conda -init 并重新打开终端,问题是:如何重新打开 Popen 执行的 shell?如果你不关闭,那么 conda 将永远不会初始化。如果你关闭,那么 Popen结束所以执行结束。
其实我也没有想出什么办法来解决这个问题。所以下面只是对这种情况的一些补充: 我可以在终端中成功运行conda activate或其他命令,这意味着conda没有问题。只是Popen执行的这个shell不能很好地初始化。 在这个特定的 shell 中,“conda env list”或“conda”可以用正确的输出很好地执行,如果你执行“conda init”,输出将是“no change and no action taking”(这很奇怪)