枕头:未定义的符号:PyCapsule_New

时间:2014-04-09 17:43:56

标签: python django apache centos

我有以下先决条件:

  • CentOS 6.5
  • 使用命令./configure --prefix=/usr/local --enable-unicode=ucs4; make; make altinstall;
  • 安装Python2.7
  • httpd作为Django网站的网络服务器

我得到了这样的追溯:

...
File "/var/www/html/mysite.com/mylib/uploader/fields.py", line 8, in <module>
 from PIL import Image
File "/var/www/html/mysite.com/eggs/Pillow-2.4.0-py2.7-linux-x86_64.egg/PIL/Image.py", line 53, in <module>
File "/var/www/html/mysite.com/eggs/Pillow-2.4.0-py2.7-linux-x86_64.egg/PIL/_imaging.py", line 7, in <module>
File "/var/www/html/mysite.com/eggs/Pillow-2.4.0-py2.7-linux-x86_64.egg/PIL/_imaging.py", line 6, in __bootstrap__
ImportError: /tmp/python-eggs/Pillow-2.4.0-py2.7-linux-x86_64.egg-tmp/PIL/_imaging.so: undefined symbol: PyCapsule_New

当我尝试从Django shell执行from PIL import Image时,它会毫无错误地传递。

谷歌搜索这个错误对我没什么帮助,请帮助。

更新:
我曾尝试使用Djangos内部服务器(manage.py runserver命令)来提供网站服务,并且运行正常。

1 个答案:

答案 0 :(得分:0)

我有类似的错误。

发生的事情是我的python2.7安装正在从系统python2.6中获取软件包(通过一些PYTHONPATH muckery)

要进行调试,请在导入的内容之前删除断点:

import sys
for path in sys.path:
    print(path)

理想情况下,它应该只包含python2.7的东西,但你可能已经在它上面泄漏了一个python2.6(或者反过来)