【问题标题】:Install mod_wsgi with Python 2.7 on Windows 64 bit在 Windows 64 位上使用 Python 2.7 安装 mod_wsgi
【发布时间】:2015-12-25 04:08:11
【问题描述】:

我正在尝试在 Windows 64 位计算机 (Windows Server 2008 R2) 上部署我的 Django 网站,该网站是使用 Python 2.7 编写的。我从https://www.apachehaus.com/cgi-bin/download.plx 安装了 Apache (Apache 2.4.16 x64) 的预编译版本(由于缺少 Apache Lounge*** 提供的选项),并检查了 Python 2.7 在 64 位上运行并与 VC9 一起编译。我找不到 mod_wsgi 的预构建二进制文件(适用于 Windows 64 位并使用 VC9 编译),所以我从 https://github.com/GrahamDumpleton/mod_wsgi/releases/tag/4.4.13 下载了 mod_wsgi 的源代码,并按照 https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/win32/README.rst 的指示,更改了 @987654324 @ 文件指向 APACHE_ROOTDIRPYTHON_ROOTDIR 的正确目录,并使用 C++ 2008 64 位命令提示符运行命令 nmake -f ap24py27-win64-VC9.mk clean。但是,这给了我错误:

wsgi_memory.obj : error LNK2019: unresolved external symbol GetProcessMemoryInfo referenced
  in function getPeakRSS
mod_wsgi.so : fatal error LINK1120: 1 unresolved externals
NMAKE : fatal error U1077: `"...\Visual C++ for Python\9.0\VC\Bin\amd64\c1.EXE"` :
  return code `0x2`
Stop.

我已多次阅读 mod_wsgi 的安装和配置文档,并在过去几个小时内搜索了包括 SO 在内的网络,但无济于事。我在这里做错了什么,我该如何解决?

***我知道安装 mod_wsgi 的官方文档警告不要使用 Apache Lounge 以外的其他来源的二进制文件,但我似乎无法从该站点找到正确的编译版本(适用于 VC9 和 Windows 64 位) .这可能是个问题吗?如果是,我该如何解决?

更新:按照 Adelin 的建议,我能够让 namke -f ap24py27-win64-VC9.mk clean 运行。但是,当我尝试运行 namke -f ap24py27-win64-VC9.mknamke -f ap24py27-win64-VC9.mk install 时,我会收到几页警告,上面写着:warning C4820: '...' : '...' bytes padding added after data member '...' 直到编译器退出

fatal error C1083: Cannot open include file: 'Python.h': No such file or directory
...\mod_wsgi-4.4.13\src\server\wsgi_memory.c<124> : warning C4711: function 'getCurrentRSS' selected for automatic inline expansion
NMAKE: fatal error U1077: '"C:\...\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\c1.EXE"' : return code '0x2'
Stop.

有谁知道为什么会这样以及我应该如何解决它?

【问题讨论】:

    标签: django apache mod-wsgi


    【解决方案1】:

    我也遇到了同样的错误。

    问题是cl.exe 找不到psapi.lib。该库包含wsgi_memory.c - GetProcessMemoryInfo 中引用的函数。

    要解决此问题,您应该按照以下步骤操作:

    1. 找到psapi.lib(在C:\上运行搜索)
    2. 打开你用来编译的ap24py27-win64-VC9.mk文件,用 任何文本编辑器
    3. 查看它包含的其他.mk 文件。很可能common-VC9.mk
    4. 使用任何文本编辑器打开该文件 (common-VC9.mk)
    5. LDFLAGS 下,再追加一行/LIBPATH:"PATH_FOUND_AT_STEP_1"\
    6. 保存更改并重试

    这对我来说也太痛苦了:)

    附:如果您在任何地方都找不到psapi.lib,那是因为您没有Windows SDK。我同时安装了Windows 7Windows 8 SDK,最终将psapi.lib 放在了C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64

    编辑: 为了以某种通用的方式为您提供最新错误的解决方案,每当nmake 引发"No such file" 错误时,common-VC9.mk 文件中未正确引用该文件的位置。

    nmake 将查找两种类型的文件:.h.lib

    如果找不到.h,则应在common-VC9.mk 文件的CPPFLAGS 变量下正确引用相应的路径。 如果没有找到.lib,则需要相应地更新LDFLAGS 路径。

    怎么样?与包含 psapi.lib 的路径相同的方式:找到文件并将相应的路径附加到正确的变量:CPPFLAGSLDFLAGS

    【讨论】:

    • 谢谢!我能够让nmake ... clean 运行您的建议,但现在当我尝试运行nmake ...nmake ... install 时,编译器向我抛出错误。我已更新问题以反映这些新错误 - 您对此问题有任何见解吗?
    • 好的,有道理。当我在CPPFLAGS 中添加python.h 的路径时,LIBPATH 相当于.h 文件?
    • python.h 专用,因为我看到你有 Python 2.7,它应该是一个新的 `/I"C:\Python27\include"` 行(假设你在那个目录中安装了 python .
    猜你喜欢
    • 2016-08-07
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多