在Apache上使用mod_wsgi运行Django时的Python链接问题:符号未找到__cg_jpeg_resync_to_restart

0 投票
2 回答
541 浏览
提问于 2025-04-16 22:11

我在尝试在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文件中指定的路径上(见帖子底部)。

错误信息中提到的三个文件在指定的位置都存在。

  1. _tkinter.so - /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_tkinter.so

  2. ImageIO - /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO

  3. 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 个回答

0

你有没有发现你的选项语句里缺少了 + 或 - 符号?
比如说,语句的例子是:
Options -Indexes +FollowSymLinks

0

看起来有一个符号链接坏掉了,所以我查了一下,在这个论坛上找到了点东西。

你需要删除在"<安装目录>/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电脑,但首先我建议你检查一下符号链接的来源是否存在,希望这样能解决你的问题。

撰写回答