6

我需要让大量 Windows XP 机器运行相同版本的 python,以及各种模块,其中之一是 python-win32。我考虑在所有客户端机器挂载的网络驱动器上安装 python,然后调整客户端上的路径。Python 可以从网络正常启动,但是在导入 win32com 时,我收到一个弹出错误消息:

程序入口点 ?PyWinObject_AsHANDLE@@YAHPAU_object@@PAPAXH@Z 在动态链接库 pywintypes24.dll 中找不到

关闭消息对话框后,我进入控制台:

ImportError:DLL 加载失败:找不到指定的过程。

我在 python 目录中搜索了 pywintypes24.dll,它存在于 "Lib\site-packages\pywin32_system32" 中。

我错过了什么,还有另一种方法可以安装 Python + Python-Win32 + 附加模块一次并让它们在多台机器上运行吗?我无法访问 Microsoft 系统管理工具,因此我需要比这更低技术。

4

3 回答 3

9

在每台机器上,您基本上必须运行pywin32_postinstall.py -install一次。假设您在网络上安装的 python 是N:\Python26,在每个客户端上运行以下命令:

N:\Python26\python.exe N:\Python26\Scripts\pywin32_postinstall.py -install

另一个重要的事情是Good Luck!。原因是您可能需要将其作为admin. 就我而言,这种设置适用于除一台计算机之外的所有计算机。我还是不明白为什么。

于 2010-02-23T16:35:17.980 回答
1

Python(或者准确地说,操作系统)使用 os.environ["PATH"] 搜索 DLL,而不是通过搜索 sys.path。

因此,您可以使用简单的 .cmd 文件启动 Python,而不是将 \server\share\python26 添加到路径中(假设安装程序(或您)从 \server\share\python26\lib\site-packages\pywin32- 复制了 DLL system32 到 \server\share\python26)。

或者,您可以在脚本尝试导入 win32api 等之前将以下代码添加到您的脚本中:

    # Add Python installation directory to the path, 
    # because on Windows 7 the pywin32 installer fails to copy
    # the required DLLs to the %WINDIR%\System32 directory and
    # copies them to the Python installation directory instead.
    # Fortunately, in Python it is possible to modify the PATH
    # before loading the DLLs.
    os.environ["PATH"] = sys.prefix + ";" + os.environ.get("PATH")
    import win32gui
    import win32con
于 2011-02-07T09:09:14.053 回答
0

您可以使用在启动时运行的批处理文件

  • 挂载网络共享 ( net use \\server\share)
  • 将 Python 和软件包安装程序从网络共享复制到本地文件夹
  • 根据已安装的版本检查 msi 安装程序的版本
  • 如果不同,卸载 Python 和所有版本相关的包
  • 重新安装所有软件包

这几乎是您自己的该软件的中央管理系统。

于 2010-02-23T16:10:52.823 回答