安装和运行pywin32 2.7时出错

时间:2012-06-19 17:34:42

标签: python winapi installation pywin32

安装后我想出了几个错误:

  

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,其中只有一台是抛出此错误。其余的工作正常。

谢谢, 麦克

9 个答案:

答案 0 :(得分:41)

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

答案 1 :(得分:9)

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

  
    

如果禁用用户访问控制(UAC),似乎就会发生这种情况     为你禁用?

  
     

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

这对我来说很好。

答案 2 :(得分:6)

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

  

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

     

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

     

因此,解决方法是创建另一个管理员帐户

     

净用户管理员/添加
  净用户管理员   net localgroup Administrators Admin / add

     

然后使用

运行pywin32安装      

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

答案 3 :(得分:5)

这些解决方案都没有帮助我(坐在Windows 10上)。

但是当我运行c:\ python27 \ scripts \ pywin32_postinstall.py -install

时,我终于解决了问题。

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

答案 4 :(得分:2)

我遇到了与作者相同的问题。我使用Tim Golden python staff中的脚本打印文本文件。运行后,会出现以下错误:

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

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

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

答案 5 :(得分:2)

PowerShell command as admin在Windows 10上为我工作,Command line prompt (as admin)失败。

答案 6 :(得分:0)

安装pywin32的步骤 -

  1. net user Admin / add
  2. net user Admin
  3. net localgroup Administrators Admin / add
  4. runas / user:Admin pywin32-217.win32-py2.7.exe

答案 7 :(得分:0)

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

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

我在Windows 7 64位SP1上使用Python 2.7.9(64位)

然而,我确实注意到一件奇怪的事情,如果我只是双击安装程序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.

答案 8 :(得分:0)

我用这个解决了它:

pip install pypiwin32