2016-08-15 11 views
0

生のpyファイルを使用すると、私のコードはうまく動作します。 winpe10上(Windowsプレインストール環境、win10の非常に薄いバージョン)が同じドロップ私は2.7に私のコードをバックポートする場合プログラムはpy2exeを超えて動作しません

File "test.py", line 1, in <module> 
    import wmi 
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked 
    File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible 
    File "C:\Python34\lib\site-packages\zipextimporter.py", line 86, in load_module 
    return zipimport.zipimporter.load_module(self, fullname) 
    File "C:\Python34\lib\wmi.py", line 88, in <module> 
    from win32com.client import GetObject, Dispatch 
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked 
    File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible 
    File "C:\Python34\lib\site-packages\zipextimporter.py", line 86, in load_module 
    return zipimport.zipimporter.load_module(self, fullname) 
    File "C:\Python34\lib\site-packages\win32com\__init__.py", line 6, in <module> 
    import pythoncom 
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked 
    File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible 
    File "C:\Python34\lib\site-packages\zipextimporter.py", line 86, in load_module 
    return zipimport.zipimporter.load_module(self, fullname) 
    File "C:\Python34\lib\site-packages\pythoncom.py", line 3, in <module> 
    pywintypes.__import_pywin32_system_module__("pythoncom", globals()) 
AttributeError: 'module' object has no attribute '__import_pywin32_system_module__' 

、これはよく働いただろうが、上:しかし、私はpy2exeでコンパイルしたとき、それははAttributeErrorをドロップしますエラー。 winpe 5(これはwin8.1の薄いバージョン)でも動作します。
私のコード例:

import wmi 

def getWmiData(wmiProperty, wmiClass, wmiNamespace='cimv2'): 
    """Return array of strings.""" 
    wmiValues = [] 
    wmiCursore = wmi.GetObject('winmgmts:\\root\\' + wmiNamespace) 
    wmiQuery = 'SELECT ' + wmiProperty + ' FROM ' + wmiClass 
    for item in wmiCursore.ExecQuery(wmiQuery): 
     wmiValues.append(str(item.__getattr__(wmiProperty))) 

    return wmiValues 

print(getWmiData('SystemSKU', 'MS_systeminformation', 'wmi')[0]) 

基本py2exeの設定:

from distutils.core import setup 
import py2exe, sys, os 

sys.argv.append('py2exe') 

setup(
    options = {'py2exe': {'compressed': True},}, 
    console = ['test.py'], 
) 

しようとしましたバージョン:

  • のpython 2.7.11、2.7.12、3.4.4
  • py2xe: 0.6.9,0.9.2.2
  • pywin32:219,220
  • WMI:1.4.9

概要:どのように私は正しい道にpy2exeでWMIモジュールを使用することができますか?

+0

あなたは 'のpython-2.7を試してみました.11.amd64.msi' + 'py2exe-0.6.9.win64-py2.7.amd64.exe' +' pywin32-219.win-amd64-py2.7.exe'? –

+0

@barakmanosもちろん!私は建築に注意を払った! –

答えて

0

私は明らかにPython 2.7(もちろん必要なモジュール)を再インストールしたので、すべてがWindows 10で動作しますが、winpe 10ではまだ動作しませんでした!

私はwmiパッケージをwinpeイメージに追加する必要がありました。以前のwinpeバージョンにはデフォルトで含まれていました!今それは同様にウィンペで動作します。この2行
(。!私はそれを理解できない私がよく知っている場合は、WMIはWinPEの上で最も使用されるツールの一つである)

コマンド:

Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab" 
Dism /Add-Package /Image:"C:\WinPE_amd64\mount" /PackagePath:"C:\Program Files\Windows Kits\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab" 
関連する問題