PHP调用Python脚本时无法加载scipy库的问题求助
解决Web用户无法访问root安装的Scipy库的方法
修改Scipy库目录权限
先在CLI下执行以下命令获取Scipy的安装路径:python3 -c "import scipy; print(scipy.__file__)"然后给该目录及子目录添加Web用户的读权限,比如Web用户是
www-data:# 开放其他用户读权限 chmod -R o+r /path/to/scipy # 或给Web用户组授权(更安全) chown -R root:www-data /path/to/scipy chmod -R g+r /path/to/scipy为Web用户单独安装Scipy
切换到Web用户身份,用pip将Scipy安装到用户私有目录:su -s /bin/bash www-data pip3 install --user scipy安装后Scipy会存放在Web用户的
~/.local/lib/pythonX.X/site-packages下,默认具备访问权限。在Python脚本中手动添加库路径
在脚本开头加入代码,把root安装的Scipy父目录加入Python的搜索路径:import sys # 替换为实际的Scipy父目录,比如/usr/local/lib/python3.8/site-packages sys.path.append('/path/to/scipy/parent/directory')注意要确保该父目录已开放读权限给Web用户。
使用Python虚拟环境
创建独立虚拟环境并安装依赖,PHP调用时指定虚拟环境的Python解释器:# 创建虚拟环境 python3 -m venv /mypython/venv # 激活并安装Scipy、Numpy source /mypython/venv/bin/activate pip install scipy numpy deactivate修改PHP的exec命令:
exec('/mypython/venv/bin/python /mypython/peaks.py', $output, $ret_code);最后给虚拟环境目录设置Web用户可访问的权限即可。
内容的提问来源于stack exchange,提问作者Doug Wolfgram
相关产品推荐
相关产品推荐

