2013-12-18 18 views
0

我無法在XP上導入pywinauto在XP上導入pywinauto與7

我有一臺運行Windows 7的計算機和一臺運行XP的虛擬機。這兩個版本都有幾乎相同的Python版本。

下面是在每個環境Python27文件夾之間差異的畫面:http://i.stack.imgur.com/ao4R7.png

看來,這些都是無關緊要的差異,尤其是當它涉及到包裝問題。

如果我嘗試import pywinauto在XP虛擬機,我得到以下幾點:

>>> import pywinauto.controls 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\pywinauto\__init__.py", line 28, in <module> 
    import findwindows 
    File "C:\Python27\lib\site-packages\pywinauto\findwindows.py", line 37, in <module> 
    import controls 
    File "C:\Python27\lib\site-packages\pywinauto\controls\__init__.py", line 33,in <module> 
    import win32_controls 
    File "C:\Python27\lib\site-packages\pywinauto\controls\win32_controls.py", line 31, in <module> 
    from pywinauto import win32functions 
ImportError: cannot import name win32functions 
>>> 

我沒試過重新安裝pywinautopywin32。在嘗試之前,我只想知道在XP和7之間pywinauto是否有問題?或者在本地窗口和虛擬機之間?

+0

請指定Python2.X 32或64bit? pywinauto在Python 64位下有一些結構大小的問題。我在Wondows 7 64bit上成功使用Python2.7 32bit + pywinauto。 – SWAPYAutomation

+0

它們都是32位2.7。我會回答我自己的問題,如果你看看它並告訴我我做了什麼,我會很喜歡它,但我不知道它爲什麼有效,但它確實如此。 – horriblyUnpythonic

回答

0

好吧,我想我明白了,儘管我不知道爲什麼。我的問題是什麼,我雖然是我原來的問題的根本原因,這是我

sre_constants.error nothing to repeat 

,當我試圖編譯我的程序在XP虛擬環境。這樣做的原因是在C:\Python27\Lib\site-packages\pywinauto\tests\asianhotkey.py在線路110

_asianHotkeyRE = re.compile (r""" 
    \(&.\)  # the hotkey 
    (
     (\t.*)|  # tab, and then anything 
     #(\\t.*)| # escaped tab, and then anything 
     (\(.*\)  # anything in brackets 
    )| 
    \s*|   # any whitespace 
    :|    # colon 
    (\.\.\.)|  # elipsis 
    >|    # greater than sign 
    <|    # less than sign 
    (\n.*)   # newline, and then anything 
    \s)*$""", re.VERBOSE) 

我甚至不能在我的虛擬XP環境,在自己的腳本運行此。如果我不是在這些行

\s*|   # any whitespace 

\s)*$""", re.VERBOSE) 

我不知道爲什麼是這樣的話,只是實驗結果的一方取出*它將運行。

無論如何,據我可以告訴變量_asianHotkeyRE只在這整個包中使用一次;在這同一文件的行(133):

found = _asianHotkeyRE.search(text) 

所以我改變了這兩個組的代碼

pattern = r""" 
    \(&.\)  # the hotkey 
    (
     (\t.*)|  # tab, and then anything 
     #(\\t.*)| # escaped tab, and then anything 
     (\(.*\)  # anything in brackets 
    )| 
    \s*|   # any whitespace 
    :|    # colon 
    (\.\.\.)|  # elipsis 
    >|    # greater than sign 
    <|    # less than sign 
    (\n.*)   # newline, and then anything 
    \s)*$""" 

found = re.search(pattern,text) 

一些關於使用正則表達式編譯沒就像這種模式的格式一樣。也許安裝在該虛擬機上的re版本不是最新版本或什麼?

這麼長話短說,它是固定的。我不知道爲什麼我會喜歡它,如果有人可以嘗試使用他們自己的任何類型的虛擬環境來重現問題。