在 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_ROOTDIR
和 PYTHON_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.mk
或 namke -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
中引用的函数。
要解决此问题,您应该按照以下步骤操作:
- 找到
psapi.lib
(运行 在 C:\
上搜索)
- 打开你用来编译的
ap24py27-win64-VC9.mk
文件,用
任何文本编辑器
- 查看它包含的其他
.mk
文件。很有可能 common-VC9.mk
- 使用任何文本编辑器打开该文件 (
common-VC9.mk
)
- 在
LDFLAGS
下,再追加一行/LIBPATH:"PATH_FOUND_AT_STEP_1"\
- 保存更改并重试
这对我来说也很痛苦:)
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
路径的方式相同:找到文件并将相应的路径附加到正确的变量:CPPFLAGS
或 LDFLAGS
.
我正在尝试在 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_ROOTDIR
和 PYTHON_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.mk
或 namke -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
中引用的函数。
要解决此问题,您应该按照以下步骤操作:
- 找到
psapi.lib
(运行 在C:\
上搜索) - 打开你用来编译的
ap24py27-win64-VC9.mk
文件,用 任何文本编辑器 - 查看它包含的其他
.mk
文件。很有可能common-VC9.mk
- 使用任何文本编辑器打开该文件 (
common-VC9.mk
) - 在
LDFLAGS
下,再追加一行/LIBPATH:"PATH_FOUND_AT_STEP_1"\
- 保存更改并重试
这对我来说也很痛苦:)
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
路径的方式相同:找到文件并将相应的路径附加到正确的变量:CPPFLAGS
或 LDFLAGS
.