Windows + Django + mod_wsgi =“DLL 加载失败”

Windows + Django + mod_wsgi =“DLL 加载失败”

很长一段时间以来,我都使用 Python 2.5 来完成所有这些工作,但最近升级到了 2.7,因为为 2.5 构建东西实在是太麻烦了。我还将 mod_wsgi 更新到了 Python 2.7 的 3.3。

在 CentOS 上使用 Apache + mod_wsgi 一切正常,在 Windows 和 CentOS 上使用 Django 运行服务器也一切正常,但在 Windows 上使用 Apache + mod_wsgi 则不行。

每当我尝试访问 Django 应用程序中的页面时,我都会收到以下信息(请注意,Apache 启动正常):

ImportError at /
DLL load failed: The specified module could not be found.

这是由以下因素引起的:

from Crypto.Cipher import AES

Etree 和其他程序会导致完全相同的错误,并且不仅限于任何特定软件包。任何带有 pyd 文件的东西都会失败。

谷歌搜索建议“为所有用户”重新安装 Python,但安装程序不再提供该选项。为了保险起见,我尝试以管理员身份重新安装 Python 2.7,并告诉它将自己注册为 Python 的默认版本,但都没有用。

我认为解决方案可能与以下方面有关:

  1. 事实上,我在这台机器上安装了 2.5、2.6 和 2.7,而 mod_wsgi 可能正在加载 2.5 而不是 2.7 的 DLL。
  2. 与 WSGIPythonPath 有关,我通常不需要设置它。

答案1

对我而言,一个可行的解决方案是使用 MingGW 构建 Crypto 模块,该解决方案允许我使用 Python 2.7(尽管不太理想)。下载 Crypto 源包并运行setup.py build --compiler=mingw32

请参阅此问题以了解更多信息:https://stackoverflow.com/questions/3706293

答案2

我遇到了类似的问题,最终发现与http://bugs.python.org/issue7833以及问题 4120(新式 DLL 地狱)。

使用 Python 2.5(这些错误出现之前的版本)帮我解决了这个问题。YMMV。

相关内容