2013-12-18 1 views
0

XP에서 pywinauto을 가져올 수 없습니다.XP에서 pywinauto를 가져 오는 중

저는 윈도우 7을 실행하는 컴퓨터와 XP를 실행하는 VM을 가지고 있습니다. 이 두 가지 버전은 거의 동일한 버전의 Python을 사용합니다. http://i.stack.imgur.com/ao4R7.png

문제의 패키지에 관해서 특히,이 하찮은 차이가 보인다 : 여기

각 환경에서 Python27 폴더의 차이의 사진입니다. 내가 pywinauto 또는 pywin32를 다시 설치 시도하지 않은

>>> 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 
>>> 

: 나는 XP VM에 import pywinauto하려고하면

나는 다음과 같은 얻을. 전에 XP와 7 사이에 pywinauto에 문제가 있는지 알고 싶습니다. 또는 네이티브 윈도우와 VM 사이?

+0

Python2.X 32 또는 64bit를 지정하십시오. pywinauto는 Python 64 비트에서 일부 구조체 크기에 문제가 있습니다. 나는 성공적으로 Python2.7 32bit + pywinauto를 Wondows 7 64bit에 사용합니다. – SWAPYAutomation

+0

둘 다 32 비트 2.7입니다. 나는 내 자신의 질문에 대답 할 것이고, 만약 당신이 그것을 살펴보고 내가 한 일을 말해 준다면, 나는 그것을 사랑할 것이다. 나는 그것이 왜 효과가 있는지는 잘 모른다. – horriblyUnpythonic

답변

0

그래, 내가 왜 그런지 알지 못해도 알아 냈다고 생각해. 내 질문은 그래도 난 내가 XP 가상 환경에서 내 프로그램을 컴파일하려고 할 때 나는

sre_constants.error nothing to repeat 

있어이었다 내 원래 문제의 근본 원인이 무엇인지했다. 이것의 원인은 라인 (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 환경에서 자신의 스크립트에서이 작업을 실행할 수 없습니다에 C:\Python27\Lib\site-packages\pywinauto\tests\asianhotkey.py했다. 나도이 라인

\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 버전이 최신 버전이 아닌 것일 수 있습니다.

짧은 이야기이므로 짧게 수정되었습니다. 왜 어떤 사람이 자신의 가상 환경을 사용하여 문제를 재현하려고 할 수 있다면 나는 그것을 좋아할 것입니다.