And*_*w C 1 python apache django ctypes numpy
这是设置:
偶尔,当我重新启动apache时,我在尝试导入ctypes时遇到导入错误.每个传入的请求都会因500错误而失败.如果我重新启动apache通常一切都会重新开始工作.
这是错误的堆栈跟踪:
Traceback (most recent call last):
File "/home/appfirst/django/django/core/handlers/base.py", line 80, in get_response
response = middleware_method(request)
-------------- A BUNCH OF DJANGO MIDDLEWARE STUFF HERE -------------
File "/home/appfirst/django/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/appfirst/backend/backend/streamer/views.py", line 6, in <module>
import appfirst.main.models as FEmodels
File "/home/appfirst/frontend/appfirst/main/models.py", line 27, in <module>
import numpy, math, mpmath
File "/usr/lib64/python2.6/site-packages/numpy/__init__.py", line 43, in <module>
import ctypeslib
File "/usr/lib64/python2.6/site-packages/numpy/ctypeslib.py", line 9, in <module>
import ctypes
File "/usr/lib64/python2.6/ctypes/__init__.py", line 546, in <module>
CFUNCTYPE(c_int)(lambda: None)
MemoryError
Run Code Online (Sandbox Code Playgroud)
我认为它可能与这个bug有关,但是我关闭了SELinux,我认为这意味着这种情况永远不会发生:
有关如何一致地重现和/或修复它的任何建议?这真是难倒我!
我也遇到过这个bug.在我的情况下,当我在64位Linux系统上的Apache下运行的PHP脚本中执行Python脚本时,会发生这种情况.[正在运行的Python代码是pypy沙箱的前端.]相同的代码可以在32位系统上正常运行,甚至可以直接从命令行执行PHP脚本.我的"修复"只是在ctypes/init .py中注释掉"CFUNCTYPE(c_int)(lambda:None)"这一行.它是文件的最后一行,后面是以下注释,表明程序员不明白发生了什么!
# XXX for whatever reasons, creating the first instance of a callback
# function is needed for the unittests on Win64 to succeed. This MAY
# be a compiler bug, since the problem occurs only when _ctypes is
# compiled with the MS SDK compiler. Or an uninitialized variable?
CFUNCTYPE(c_int)(lambda: None)
Run Code Online (Sandbox Code Playgroud)
显然cpython中有一个更深层次的问题,但修复对我有用.
归档时间: |
|
查看次数: |
2420 次 |
最近记录: |