ImportError: нет модуля с именем win32api, python, даже если местоположение win32api добавлено к пути - PullRequest
4 голосов
/ 22 февраля 2011

Я довольно новичок в питоне.(Python 2.6)

Я пытаюсь составить список запущенных процессов, импортировав модуль wmi.

import wmi
sys.path.append(r'C:\Python26\Lib\site-packages\isapi\test\build\bdis.win32\winexe\temp')
c = wmi.WMI () 
for process in c.Win32_Process ():
    print process.ProcessId, process.Name

Системный поиск указывает на то, что win32api находится в расположении в операторе добавления вкод выше.Но я все еще получаю ошибку: ImportError: Нет модуля с именем win32api

Фактическая ошибка:

Traceback (most recent call last):
  File "C:\Documents and Settings\xxxx\Desktop\Python\Practice Code\file.py", line 1, in <module>
    import wmi
  File "C:\Python26\lib\site-packages\wmi.py", line 88, in <module>
    from win32com.client import GetObject, Dispatch
  File "C:\Python26\lib\site-packages\win32com\__init__.py", line 5, in <module>
    import win32api, sys, os
ImportError: No module named win32api

Я установил win32extensions, чтобы убедиться, что версии и платформа совпадают.Я использую 2.6 Я также установил wmi-1.4.6

Мой путь:

C:\Documents and Settings\xxxx\Desktop\Python\Practice Code
C:\Python26\Lib\idlelib
C:\WINDOWS\system32\python26.zip
C:\Python26\DLLs
C:\Python26\lib
C:\Python26\lib\plat-win
C:\Python26\lib\lib-tk
C:\Python26
C:\Python26\lib\site-packages

Есть идеи?

1 Ответ

2 голосов
/ 22 февраля 2011

Здесь должна быть вся необходимая информация:

http://mail.python.org/pipermail/python-win32/2003-December/001482.html

Нет необходимости в WMI, просто используйте расширения Win32.

from win32com.client import GetObject
WMI = GetObject('winmgmts:')

#List all processes
processes = WMI.InstancesOf('Win32_Process')
for process in processes:
    print process.Properties_('Name')

#Get a specific process
p = WMI.ExecQuery('select * from Win32_Process where Name="chrome.exe"')
#view all possible properties
for prop in p[0].Properties_:
    print prop
#print out PID
print p[0].Properties_('ProcessId').Value

Peter

...