我有一个python CGI脚本我试图在共享主机上运行cv2.py。我把所有东西都放在命令行中但是当我把它带到CGI时它在cv2上得到一个importerror。
这是一个特殊的Apache安装,因为我的Python版本2.7.2不是默认的Python版本,所有的网站包都安装在我的用户主目录中。
以下是代码:
#!/path/to/bin/python
import cgi
import cgitb
import sys
version = sys.version
cgitb.enable()
path = sys.path
import os
import pwd
# import cv2 << this is the line that causes the error from the web
def get_username():
return pwd.getpwuid( os.getuid() )[ 0 ]
print "Content-Type: text/html"
print
print "<h1>%s</h1>" % version
print "<h1>%s</h1>" % path
print "<h1>%s</h1>" % get_username()
最奇怪的部分是,从Web服务器运行的用户名,路径和版本与从命令行运行的用户名,路径和版本完全相同。从命令行,cv2可以正常导入和使用,但是从web,同一个文件获取importError尝试导入cv2:
cv2 undefined
<type 'exceptions.ImportError'>: numpy.core.multiarray failed to import
args = ('numpy.core.multiarray failed to import',)
message = 'numpy.core.multiarray failed to import'
如果我尝试导入numpy或Image(PIL),我会得到一个memoryError:
<type 'exceptions.MemoryError'>:
args = ()
message = ''
我想知道是否存在任何其他可能导致导入错误的Web服务器配置问题,当所有内容都从命令行运行并且看起来配置与不起作用的Web完全相同时?< / p>
答案 0 :(得分:0)
所以我对memoryError进行了更深入的搜索,并通过修改ctypes / init .py来找到这个模糊的解决方案,在这种情况下似乎已经完成了这个技巧:
https://stackoverflow.com/a/6769624/895656
这似乎是numpy 1.8.2
版本中的一个错误