通过激活anaconda环境,使用symfony进程(PHP)调用python程序

通过激活anaconda环境,使用symfony进程(PHP)调用python程序,python,anaconda,Python,Anaconda,我想使用anaconda环境从php Web服务器进程调用python脚本 使用internet,我组装了以下命令:$(conda info--base)/bin/activate env_name&&python/path/to/myfile.py&&conda deactivate 注1:不使用source,因为Web服务器在sh中执行,source是bash的东西;它必须是 注2:我正在使用$(conda info--base)/bin/activate自动查找到conda的路径,而不是

我想使用anaconda环境从php Web服务器进程调用python脚本

使用internet,我组装了以下命令:
$(conda info--base)/bin/activate env_name&&python/path/to/myfile.py&&conda deactivate

  • 注1:不使用
    source
    ,因为Web服务器在
    sh
    中执行,
    source
    是bash的东西;它必须是
  • 注2:我正在使用
    $(conda info--base)/bin/activate
    自动查找到conda的路径,而不是对其进行硬编码。它返回类似于
    /home/me/miniconda3
无论如何:当我在shell中运行这个命令时,我得到了我想要的输出,工具运行

当我从(ApacheLinux)Web服务器运行它时,它失败了

我的电话号码:

    use Symfony\Component\Process\Process;

    $process = Process::fromShellCommandline($cmd);
    $process->setWorkingDirectory(base_path());
    $process->setTimeout(0);
    $process->run();
我在
$process->getErrorOutput()
中发现的错误清楚地表明,在python代码中找不到所需的模块,例如,环境没有更改


我能做些什么来解决这个问题?

啊哈。我自己没有正确地测试。当显式使用
sh
而不是我通常使用的shell时,我尝试了更多

解决办法是:

$(conda info--base)/bin/activate&&conda activate env_name&&python/path/to/myfile.py&&conda deactivate

例如:

  • 源代码激活脚本
  • 正常激活环境
  • 运行python
  • 正常停用
我有一个错误的印象,认为activate已经可以接受一个参数,但它似乎只是忽略了这一点