在 Windows 64 位上安装 mod_wsgi 和 Python 2.7

Install mod_wsgi with Python 2.7 on Windows 64 bit

我正在尝试在 windows 64 位计算机 (Windows Server 2008 R2) 上部署我的 Django 网站,该网站是使用 Python 2.7 编写的。我从 https://www.apachehaus.com/cgi-bin/download.plx (due to lack of option provided by Apache Lounge***), and have checked that Python 2.7 runs on 64 bit and compiles with VC9. I wasn't able to find a pre-built binary for mod_wsgi (for Windows 64 bit and compiled with VC9), so I downloaded the source code for mod_wsgi from https://github.com/GrahamDumpleton/mod_wsgi/releases/tag/4.4.13 and followed the direction from https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/win32/README.rst 安装了预编译版本的 Apache (Apache 2.4.16 x64),更改 ap24py27-win64-VC9.mk 文件以指向 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.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 更新为 运行。但是,当我尝试 运行ning 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.0\VC\Bin\amd64\c1.EXE"' : return code '0x2'
Stop.

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

我遇到了同样的错误。

问题是 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. 保存更改并重试

这对我来说也很痛苦:)

P.S。如果您在任何地方都找不到 psapi.lib,那是因为您没有 Windows SDK。我安装了两个 Windows 7 and Windows 8 SDK,最终 psapi.lib 位于 C:\Program Files (x86)\Windows Kits.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.