web-dev-qa-db-fra.com

Erreur lors de l'installation et de l'exécution de pywin32 2.7

Je viens avec quelques erreurs après l'installation:

pywin32-217.win32-py2.7

J'ai récemment mis à niveau ArcGIS vers 10.1 et il utilise Python 2.7 (par opposition à la version 2.6 fournie avec ArcGIS 10.0).

Lorsque j'exécute le programme d'installation sur Windows 7 64 bits, il s'installe, mais envoie le message suivant:

close a échoué dans le destructeur d'objet de fichier:

sys.excepthook est manquant

sys.stderr perdu

J'avais un simple script python à imprimer sur une imprimante à partir d'un dossier contenant des fichiers .pdf qui fonctionnait avant ma mise à niveau

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

Maintenant, quand je lance le script, j'obtiens le message d'erreur suivant:

Traceback (appel le plus récent en dernier): Fichier "Z:\ESRI\Python\Solstice_Tools_Scripts\Printer_Tools\Batch_Print_From_Prom_Pnom_PDF_Only\BatchprintFromPDFOnly_Test.py", ligne 34, dans win32api.ShellExecute (0, "print", "impression", 0) erreur: (31, 'ShellExecute', 'Un périphérique connecté au système ne fonctionne pas.')

Échec de l'exécution (BatchPrintFromPDFOnly2).

J'ai cherché sur Google et essayé plusieurs solutions, telles que l'exécution du fichier exécutable en mode de dépannage, mais l'erreur persiste. Quelqu'un peut-il suggérer ce qui peut causer ceci?

En passant, j'ai mis à niveau 4 ordinateurs de mon entreprise vers la nouvelle version de Python et ArcGIS, et un seul d'entre eux génère cette erreur. Le reste fonctionne bien.

Merci, mike

17
Mike

J'ai eu le même problème, mais je l'ai résolu un peu différemment. Au lieu de créer un autre compte administrateur, j'ai pu exécuter le pywin32-217.win32-py2.7.exe avec succès à partir d'une invite de commande que j'ai commencée avec Exécuter en tant qu'administrateur .

40
Rina Rivera

Une autre solution est ce que Mark Hammond suggère sur la liste de diffusion pywin32 :

Cela semble se produire si le contrôle d'accès utilisateur (UAC) est désactivé - est-il désactivé pour vous?

Quoi qu’il en soit, essayez d’exécuter «scripts python\pywin32_postinstall.py -install» à partir de la racine du répertoire d’installation et tout devrait se terminer, ce qui devrait corriger l’erreur suivante.

CA marchait bien pour moi.

9
Gerrat

Vous devez not / installer en tant qu'administrateur, voir ce rapport de bogue :

C’est peut-être parce que vous exécutez Windows sous le compte «Administrateur» et que tout ce que vous exécutez normalement est égal à «exécuter en tant qu’administrateur».

Et paradoxalement, l’exécution de l’installation de pywin32 sous Windows 7 en tant qu’administrateur provoque cette erreur.

Donc, une solution de contournement consiste à créer un autre compte administrateur

Net User Admin/add
Net User Admin
net localgroup Administrateurs Admin/add

puis lancez l'installation pywin32 avec

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

6
John

Aucune des solutions ne m'a aidé (assis sur Windows 10).

Mais je l'ai finalement résolu quand j'ai lancé c:\python27\scripts\pywin32_postinstall.py -install

Après l'installation, vous pouvez essayer de réexécuter le programme d'installation juste pour être sûr que cela fonctionne pour moi.

5
Pynord

Courir depuis un PowerShell command as admin a fonctionné pour moi sous Windows 10, alors que Command line Prompt (as admin) a échoué.

2
Anonymouse

J'ai rencontré le même problème que l'auteur. J'ai utilisé le script de Tim Golden staff python pour imprimer un fichier texte. Après avoir exécuté, il y a des erreurs comme celles-ci:

pywintypes.error: (31, 'ShellExecute', 'Un périphérique connecté au système ne fonctionne pas.')

Mon système est Windows 7, 64 bits. Le python est python2.7 64bit.

Je pense que l'erreur n'a rien à voir avec l'installation de pywin32 ou les paramètres du système Windows. Je suppose que la raison en est le paramètre d'ouverture par défaut du logiciel pour le fichier .txt. Parce qu'après avoir changé le logiciel d'ouverture par défaut de Nodepad ++ en bloc-notes, je peux alors imprimer le fichier sur mon imprimante HP.

2
xjfengck

J'ai rencontré le même problème lorsque j'ai installé pywin32-219.win-AMD64-py2.7.exe en exécutant le fichier d'installation en tant qu'administrateur.

Une fois installé en exécutant simplement le fichier (en double-cliquant dessus), je n’ai plus eu à faire face à ce problème.

Je suis sur Windows 7 64 bits SP1 avec Python 2.7.9 (64 bits)

Cependant, j'ai remarqué une chose étrange: si je cliquais deux fois sur le programme d'installation, il fallait un peu plus de 20 secondes pour que l'invite apparaisse si je souhaite exécuter le fichier exe ou non, alors que dans le cas de l'exécution du fichier en tant qu'administrateur, c'est arrivé à ce moment-là (je n'ai pas dû attendre aussi longtemps). J'utilise un disque SSD de 120 Go, je ne peux donc pas contester la lenteur du disque dur dans ce cas.

Quoi qu'il en soit, voici le résultat après l'installation réussie de pywin32 dans mon cas:

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.
0
Deep

Je l'ai résolu en utilisant ceci:

pip install pypiwin32
0
Aminah Nuraini

Les étapes pour installer pywin32 -

  1. Net User Admin/add
  2. Net User Admin
  3. net localgroup Administrateurs Admin/add
  4. runas/utilisateur: Admin pywin32-217.win32-py2.7.exe
0
Abhishek Kulkarni