You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supervisor无法加载CUDA库求助(路径未缺失,无Supervisor可正常运行)

解决Supervisor启动Flask+TensorFlow-GPU应用时的libcublas.so.9.0找不到问题

这个问题我之前也碰到过,核心原因很明确:你在shell里直接跑gunicorn时,shell会自动加载你的环境变量(比如CUDA的库路径),但Supervisor启动进程时用的是非交互式非登录shell,不会自动加载这些环境变量,导致TensorFlow找不到CUDA的依赖库。

下面给你几个可行的解决方案:

方案1:在Supervisor配置中直接指定环境变量

修改你的Supervisor配置,在[program:appserver]块里添加environment参数,把CUDA的库路径加入到LD_LIBRARY_PATH中:

[program:appserver]
command = gunicorn server:app -b localhost:8000
directory = /storage/appserver
user = root
stdout_logfile = /home/deploy/appserver/logs/gunicorn_stdout.log
stderr_logfile = /home/deploy/appserver/logs/gunicorn_stderr.log
# 添加这一行,替换成你实际的CUDA 9.0安装路径
environment = LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:/usr/local/lib:$LD_LIBRARY_PATH"

注意:如果你的CUDA 9.0安装在其他路径,要把/usr/local/cuda-9.0/lib64改成你实际的路径,可以通过在shell里执行find / -name libcublas.so.9.0找到准确路径。

方案2:在启动命令前加载环境变量脚本

如果你的CUDA环境变量是写在/etc/profile或者~/.bashrc里的,可以让Supervisor先加载这些脚本再启动gunicorn:

[program:appserver]
# 用bash -c先source环境脚本,再执行gunicorn
command = bash -c 'source /etc/profile && gunicorn server:app -b localhost:8000'
directory = /storage/appserver
user = root
stdout_logfile = /home/deploy/appserver/logs/gunicorn_stdout.log
stderr_logfile = /home/deploy/appserver/logs/gunicorn_stderr.log

如果你是把CUDA环境变量放在root用户的~/.bashrc里,可以把source /etc/profile改成source /root/.bashrc。

方案3:验证环境变量的正确性

先在shell里执行以下命令,确认你的CUDA路径确实在环境变量里:

echo $LD_LIBRARY_PATH

如果输出里没有/usr/local/cuda-9.0/lib64,说明你需要先在shell里配置好CUDA的环境变量(比如在/etc/profile里添加export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH),再用上面的方案1或2让Supervisor继承这个环境。

修改完Supervisor配置后,记得重启Supervisor服务生效:

supervisorctl reread
supervisorctl update
supervisorctl restart appserver

内容的提问来源于stack exchange,提问作者tubadc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:48:18