Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

django - Python ctypes MemoryError in fcgi process from PIL library

I'm trying to run Django on shared hosting (Bluehost). I'm using functionality that requires PIL. PIL imports and works from an interactive shell, but in my fcgi process it crashes with a MemoryError at from PIL import image. Any help on why it might be failing inside fcgi would be much appreciated.

__Environment Info__:  
Python2.7

Local installs of libjpg, zlib, freetype, and lcms

Virtualenv:  
Django 1.3, PIL, flup, etc.

__Stack Trace__:  

    File ".../feincms_thumbnail.py", line 3, in <module>  
        from PIL import Image

    File ".../PIL/Image.py", line 45, in <module>  
        \__import__("FixTk")

    File ".../python2.7/lib-tk/FixTk.py", line 15, in <module>  
        import ctypes

    File ".../python2.7/ctypes/__init__.py", line 549, in <module>  
        CFUNCTYPE(c_int)(lambda: None)

__.fcgi__:  

<!-- language: python -->
    # setup paths
    # set DJANGO_SETTINGS_MODULE in os.environ  

    from django.core.servers.fastcgi import runfastcgi  
    runfastcgi(method="threaded", daemonize="false")
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I have temporarily fixed that error commenting the last line in this file $HOME/lib/python2.7/ctypes/__init__.py that is something like #CFUNCTYPE(c_int)(lambda: None).

That's work for me, but i don't know what exactly the problem is.

UPDATE

In python 2.7.3 the line number is :279 not the last as I said above.

UPDATE 2 Since the line may vary between minor versions, you should look for a chunk of code that looks something like this:

# 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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...