记录win10环境下 php页面调用python脚本
1.起因
期初是自己搭建的一个python机器学习模型,但是不太会qt界面设计,所以想着使用php去搭建一个网站,美化一下界面,避免全命令行的操作
所以在python目录下写了一个php页面去调用shell执行python命令
页面显示 no module cv2
可是主机上有opencv-python,按理说可以正常导入
也就是说php执行的shell命令可能无法访问cv2的地址
2.原因:
最后排查发现,其他第三方库安装在d盘anaconda目录下面了。由于以前学习时对包的管理没有那么严谨,cv2安装在c盘中了(是以前vs2019的python安装路径)所以程序执行的时候会找不到cv2的目录。
3.解决方案
3.1 解决导入问题
所以,需要在导入cv2的时候添加cv2的保存目录
利用sys.path.append将cv2目录添加,再导入cv2
3.2 numpy报错
解决完上述问题之后,php页面又报错
cannot import name '_validate_lengths' from 'numpy.lib.arraypad'
google之后发现需要改numpy内置代码,或者对numpy进行降级,但是numpy版本与很多库有依存关系,可能降低版本之后部分库就无法使用了,而且修改内置代码可能会存在一定风险。
最终发现是skimage库的问题,所以需要对该库进行更新
pip install --upgrade -i https://pypi.mirrors.ustc.edu.cn/simple/ scikit-image
更新完成之后发现代码可以正常使用了!
3.3 返回乱码
在python代码中加入
import codecs
import sys
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())
php调用python成功!