在Apache上使用mod_wsgi运行Django时的Python链接问题:符号未找到__cg_jpeg_resync_to_restart
我在尝试在Apache上运行我的Django网站时遇到了这个错误。这个网站在开发服务器上是可以正常工作的:
ViewDoesNotExist at /
Could not import myproject.modulename.views. Error was: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_tkinter.so, 2): Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /Applications/MAMP/Library/lib/libjpeg.8.dylib
我不太确定该如何解决这个问题。其他的Django网站在这个Apache安装上都能正常运行。这个目录在我apache.conf文件中指定的路径上(见帖子底部)。
错误信息中提到的三个文件在指定的位置都存在。
_tkinter.so -
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_tkinter.so
ImageIO -
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
libjpeg.8.dylib -
/Applications/MAMP/Library/lib/libjpeg.8.dylib
我不太明白 __cg_jpeg_resync_to_restart
是什么。
下面是我在试图弄清楚错误信息的意思时发布的原始消息。感谢sacabuche给我指明了方向。
我正在尝试让一个Django网站在Apache上运行。它在Django开发服务器上可以正常工作,但当我尝试在Apache上使用mod_wsgi运行时就出现了这个错误。我知道mod_wsgi是有效的,因为我在我的MAMP开发服务器上有一个小的试验网站(这是这个网站的简化版本)可以正常工作。这是我在其他人的帮助下通过这篇帖子实现的:Django/mod_wsgi和PHP作为同一Apache服务器上的虚拟主机,使用MAMP
新网站使用了不同的数据库,现在位于localhost根目录,但其他方面非常相似,所以这个错误让我很困惑。
这是我的Apache配置的代码(注意:PHP网站可以正常工作,如果我将WSGIDaemonProcess重定向到旧网站,它也能正常加载):
ServerName localhost UseCanonicalName Off DocumentRoot "/Applications/MAMP/htdocs"
Alias /phpsite /Applications/MAMP/htdocs/phpsite
<Directory "/Applications/MAMP/htdocs/phpsite">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess site1 display-name=%{GROUP}
WSGIProcessGroup site1
Alias /media/ /Applications/MAMP/htdocs/media/
<Directory /Applications/MAMP/htdocs/media>
Options ExecCGI
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /Users/sequoia/djangoprojects/myproject/apache/django.wsgi
<Directory /Users/sequoia/djangoprojects/myproject/apache>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
谢谢。
2 个回答
你有没有发现你的选项语句里缺少了 + 或 - 符号?
比如说,语句的例子是:
Options -Indexes +FollowSymLinks
看起来有一个符号链接坏掉了,所以我查了一下,在这个论坛上找到了点东西。
你需要删除在"<安装目录>/lib"
下的符号链接“libpng.dylib”和“libjpeg.dylib”。
然后,创建指向正确库的新符号链接。
ln -s /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPNG.dylib /Applications/MAMP/Library/lib/libPNG.dylib
ln -s /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib /Applications/MAMP/Library/lib/libJPEG.dylib
我现在没有Mac电脑,但首先我建议你检查一下符号链接的来源是否存在,希望这样能解决你的问题。