python-win32 Python Exe未在Windows 2003上运行

时间:2015-07-27 15:32:16

标签: python

我编写了用于获取CPU使用率,RAM和的Python脚本 Windows服务器的磁盘使用情况。

然后我将脚本转换为.exe直到在服务器上执行。

.exe在Windows 2008服务器上正常运行,但是它出错了 在Windows 2003上执行时。以下是错误:

BufferedWriter writer =
                    new BufferedWriter (new FileWriter(".\\Records.txt", true));   // true for appending a text to existing file

这是我的Python脚本:

C:\dist>Monitor_server.exe
Traceback (most recent call last):
  File `Monitor_server.py`, line 9, in <module>
  File `psutil\__init__.pyo`, line 85, in <module>
  File `psutil\_psmswindows.pyo`, line 15, in <module>
  File `_psutil_mswindows.pyo`, line 12, in <module>
  File `_psutil_mswindows.pyo`, line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.

1 个答案:

答案 0 :(得分:0)

The Windows C module used by psutil包括几个预处理器条件,它们查看正在编译的Windows版本,使其非常特定于该版本。

您需要为不同的主要版本构建一个包。

具体做法是:

  • 在WIN32_WINNT 0x0501(XP + SP2)中,使用进程内存计数器。
  • 在WIN32_WINNT 0x0600(Vista),使用NtQueryInformationProcess。
  • 当为本机64位版本设置_WIN64时,数据类型涉及不同(long longs,而不是long)。

现在,让我们看一下compares against the versions of Windows you're using here

的方式
  • Windows Server 2003使用WIN32_WINNT 0x0502
  • Windows Server 2008使用WIN32_WINNT 0x0600(与Vista相同)

...所以,答案是:Windows Server 2008和Vista上使用的界面在2003年不可用。(您可以在2003年编译并在2008年使用生成的二进制文件,但这将失去新界面的优点)。