php - 如何在 php-fpm shell_exec 中激活 anaconda 环境?
问题描述
我在 docker 容器中以 nginx 用户身份运行 php-fpm。Dockerfile 使用 pandas 包创建名为“ss”的正确 anaconda 环境。当我附加到 docker 容器时它工作正常。
Docker CMD 运行一个 init.sh 脚本:
. /opt/conda/etc/profile.d/conda.sh
conda activate /opt/conda/envs/ss
php-fpm --fpm-config /etc/php-fpm.conf
nginx -g 'daemon off;'
然后,一个 PHP 脚本使用运行 Python 脚本
shell_exec("python ss.py");
这与以下错误有关:
ImportError:没有名为 pandas 的模块
我尝试了 shell_exec 的各种组合,我尝试在运行脚本之前激活 env,但它大多出错:
CommandNotFoundError:您的 shell 未正确配置为使用“conda activate”
如何为所有 PHP shell_exec 脚本激活“ss”环境?
解决方案
你可以像这样直接使用。
shell_exec('/root/.conda/envs/my-rdkit-env/bin/python3 ss.py');
推荐阅读
- spring-boot - Spring Boot Data Jpa 中的空指针异常
- python - 使用 Pyinstaller 从 .py 创建 exe 时 netCDF4 出错
- r - 如何从矩阵中提取预测和实际值向量以将它们与 R 中的confusionMatrix() 一起使用?
- docker - Dockerfile 使用脚本设置环境变量
- javascript - 如何使用javascript更改数据库值?
- android - Lokhttp3/internal/Util 类中没有静态方法 delimiterOffset
- javascript - 如何发送谷歌电子表格输入,如果有公式则忽略单元格
- javascript - 启动时全屏打开 2 个单独的 chromium 选项卡,然后在其中一个上自动滚动
- html - 在响应式视图中将 div 放置在桌面的同一行中作为反向
- java - xades4j.utils.XadesProfileResolutionException: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException SoapUI