我已经在ubuntu 14.04上设置了OpenCV 3.0,并绑定了python3.4。我使用virtualenv运行OpenCV。因此,每次我都必须运行workon cv
命令。
现在我想运行一个使用 exec
命令使用 PHP 中的 OpenCV 库的 python 脚本。
exec("workon cv");
exec("python3 hough_circles.py")
这是错误:
sh: 1: workon: not found
Traceback (most recent call last):
File "hough_circles.py", line 1, in <module>
import cv2
ImportError: No module named 'cv2'
两个问题...
1. 工作路径
错误消息告诉您它不知道workon
在哪里,因此您最好告诉它它的完整路径,以便exec()
可以找到它,例如:
exec("/usr/local/bin/workon cv");
上面的/usr/local/bin
只是一个示例,如果您想知道它在系统上的位置,请运行:
which workon
并使用输出。
2. 子流程是独立的
即使您正确设置了该设置,执行workon
然后退出的进程,然后开始一个新的,闪亮的新进程 - 您没有在其中运行workon
。因此,您最好在同一过程中执行这两件事,如下所示:
exec("/usr/local/bin/workon cv && /path/to/python3 hough_circles.py");