在Windows 64位

时间:2015-09-28 00:09:20

标签: django apache mod-wsgi

我正在尝试在Windows 64位计算机(Windows Server 2008 R2)上部署使用Python 2.7编写的Django网站。我从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的指示,将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\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.

有没有人知道为什么会这样,以及我该怎么做呢?

1 个答案:

答案 0 :(得分:3)

我有同样的错误。

问题是cl.exe找不到psapi.lib。此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. 保存更改并重试
  7. 这对我来说真是太痛苦了。)

    P.S。如果您在任何地方找不到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,则应在CPPFLAGS文件的common-VC9.mk变量下正确引用相应的路径。 如果找不到.lib,则需要相应地更新LDFLAGS路径。

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