【问题标题】:Error installing and running pywin32 2.7安装和运行 pywin32 2.7 时出错
【发布时间】:2012-06-21 19:20:41
【问题描述】:

安装后出现几个错误:

pywin32-217.win32-py2.7

我最近将 ArcGIS 升级到 10.1,它使用 Python 2.7(而不是 ArcGIS 10.0 附带的 2.6)

当我在 Windows 7 64 位上运行安装程序时,它会安装,但会抛出以下消息:

在文件对象析构函数中关闭失败:

sys.excepthook 丢失

丢失 sys.stderr

我有一个简单的 python 脚本,可以从包含 .pdf 文件的文件夹打印到打印机,这些文件在我升级之前就可以使用

import arcpy, glob, win32api, os

pdfLoc = arcpy.GetParameterAsText(0)

try:
    copies = int(arcpy.GetParameter(1))
except:
    copies = 1

for pdfname in glob.glob(os.path.join(pdfLoc, "*.pdf")):
    fullpath = os.path.join(pdfLoc, pdfname)
    for copy in range(copies):
        win32api.ShellExecute(0, "print", pdfname, None, ".", 0)

del fullpath
del pdfname
del pdfLoc

现在当我运行脚本时,出现以下错误:

Traceback(最近一次调用最后一次):文件 "Z:\ESRI\Python\Solstice_Tools_Scripts\Printer_Tools\Batch_Print_From_PDF_Only\BatchprintFromPDFOnly_Test.py", 第 34 行,在 win32api.ShellExecute(0, "print", pdfname, None, ".", 0) 错误:(31, 'ShellExecute', '连接到系统的设备不是 功能。')

执行失败 (BatchPrintFromPDFOnly2)。

我一直在谷歌搜索并尝试了一些解决方案,例如在故障排除模式下运行可执行文件,但错误仍然存​​在。任何人都可以提出可能导致这种情况的原因吗?

附带说明一下,我将公司的 4 台计算机升级到新版本的 python 和 ArcGIS,其中只有一台抛出此错误。其余的工作正常。

谢谢, 迈克

【问题讨论】:

  • 如果只是一台电脑的问题,那台机器上卸载/重新安装是否简单?
  • @托马斯。我试过多次卸载。不幸的是,问题仍然存在。

标签: python winapi installation pywin32


【解决方案1】:

我遇到了同样的问题,但解决的方式有点不同。我没有创建另一个管理员帐户,而是能够从我以以管理员身份运行开始的命令提示符成功执行pywin32-217.win32-py2.7.exe

【讨论】:

  • 这很有效,而且它似乎是一个更简单的解决方案。赞一个!
  • 同样适用于我。我还确保我的路径变量 PYTHONPATH=D:\Python27PYTHONPATH=D:\Python27\Scripts 设置正确。
  • 以管理员身份运行也对我有用。我很想知道为什么。
  • 以管理员身份运行 exe 对我不起作用。但正如他所说,以管理员身份启动命令提示符,然后从那里运行 pywin32 工作!奇怪的!我的是 Windows 8.1,python 2.7.9 64 位
  • 这也对我有用,而直接在 admin 中运行 exe 却没有(与 atique 相同)。
【解决方案2】:

另一种解决方案是 Mark Hammond 建议的 on the pywin32 mailing list

如果禁用用户访问控制 (UAC),这似乎会发生 - 是吗? 为你禁用?

无论哪种方式,请尝试运行“python scripts\pywin32_postinstall.py -install” 从安装目录的根目录开始,事情应该完成注册 - 这应该可以解决您看到的下一个错误。

这对我来说很好。

【讨论】:

  • 运行此安装后脚本对我有用,因为“以管理员身份运行”提示失败。谢谢
【解决方案3】:

您必须以管理员身份安装,请参阅bug report

这可能是因为您在“管理员”帐户下运行 Windows,并且您通常运行的任何内容都等于“以管理员身份运行”

矛盾的是,以管理员身份在 Windows 7 上运行 pywin32 的安装会导致此错误。

所以一种解决方法是创建另一个管理员帐户

网络用户管理员/添加
网络用户管理员
网络本地组管理员管理员/添加

然后运行pywin32安装

runas /user:Admin pywin32-217.win32-py2.7.exe

【讨论】:

  • 对我也有用,只需要为帐户设置密码(可以从计算机管理中完成)。
  • 是的!这非常有效 - 只是不要忘记设置密码,否则您可能会收到错误:“1327:登录失败:用户帐户限制。可能的原因是不允许使用空白密码、登录时间限制或已强制执行策略限制。 "哈哈,猜猜我是怎么知道的……:-)
  • 哦,这可能看起来很明显,但请记住您的 pywin 文件可能不一样,因此最后一行可能会有所不同。例如,我的是:runas /user:Admin pywin32-219.win-amd64-py2.7.exe
  • 这太棒了。我实际上没有以管理员身份登录,但仍然出现此错误。但是,一旦我在当前帐户中使用 runas,它就可以工作。
【解决方案4】:

没有一个解决方案对我有帮助(坐在 Windows 10 上)。

但是当我运行 c:\python27\scripts\pywin32_postinstall.py -install 时,我终于把它修好了

安装后,您可以尝试再次运行安装程序,以确保为我工作。

【讨论】:

  • 因此我得到了ImportError: DLL load failed: The specified module could not be found
  • 顺便说一句,我也在使用 Windows 10。我在以前版本的 Windows 中没有遇到这个问题
  • ran c:\python27\scripts\pywin32_postinstall.py -install 这是什么意思?
【解决方案5】:

我遇到了和作者一样的问题。我使用来自Tim Golden python staff 的脚本来打印一个文本文件。运行后出现如下错误:

pywintypes.error: (31, 'ShellExecute', '连接到系统的设备无法运行。')

我的系统是 Windows 7,64 位。 python是python2.7 64bit。

我认为该错误与pywin32的安装或windows系统设置无关。我猜原因是默认打开软件设置为 .txt 文件。因为在我将默认打开软件从 Nodepad++ 更改为记事本之后,我可以在我的 Hp 打印机上打印文件。

【讨论】:

  • 同样的事情,如果默认应用是记事本而不是记事本++ Tim 的脚本就可以正常工作。
【解决方案6】:

在 Windows 10 上从 PowerShell command as admin 运行对我有用,而 Command line prompt (as admin) 失败。

【讨论】:

    【解决方案7】:

    安装pywin32的步骤-

    1. net user Admin /add
    2. 网络用户管理员
    3. net localgroup Administrators Admin /add
    4. runas /user:Admin pywin32-217.win32-py2.7.exe

    【讨论】:

      【解决方案8】:

      当我通过以管理员身份运行安装程序文件来安装 pywin32-219.win-amd64-py2.7.exe 时遇到了同样的问题。

      一旦我通过简单地执行文件(双击它)来安装它,我就再也没有遇到这个问题了。

      我使用的是带有 Python 2.7.9(64 位)的 Windows 7 64 位 SP1

      但是,我确实注意到一件奇怪的事情,如果我只是双击安装程序 exe,则需要 20 多秒的时间才会出现提示是否要运行 exe 文件,而在运行文件的情况下作为管理员,它发生在那时(不必等待那么久) 我使用的是 120 GB SSD,所以在这种情况下不能质疑硬盘的缓慢性。

      无论如何,在我的例子中,这是成功安装 pywin32 后的输出:

      Copied pythoncom27.dll to C:\Windows\system32\pythoncom27.dll
      Copied pythoncomloader27.dll to C:\Windows\system32\pythoncomloader27.dll
      Copied pywintypes27.dll to C:\Windows\system32\pywintypes27.dll
      Registered: Python.Interpreter 
      Registered: Python.Dictionary 
      Registered: Python 
      -> Software\Python\PythonCore\2.7\Help[None]=None
      -> Software\Python\PythonCore\2.7\Help\Pythonwin Reference[None]='C:\\Python27\\Lib\\site-packages\\PyWin32.chm'
      Pythonwin has been registered in context menu
      Creating directory C:\Python27\Lib\site-packages\win32com\gen_py
      Shortcut for Pythonwin created
      Shortcut to documentation created
      The pywin32 extensions were successfully installed.
      

      【讨论】:

        【解决方案9】:

        我用这个解决了:

        pip install pypiwin32
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-03
          • 1970-01-01
          • 1970-01-01
          • 2018-01-09
          • 2014-05-04
          • 1970-01-01
          相关资源
          最近更新 更多