2011-03-03 6 views
2

Windows 7 컴퓨터에 Python 2.4.4 및 3.1.3이 있습니다. PySerial을 사용하고 싶습니다.PySerial 및 여러 개의 Python 설치에 문제가 발생했습니다.

제가 내장되어 있다고 들었으므로 두 버전 모두에서 import serial을 시도했습니다. 두 경우 모두 Import Error이 발생했습니다.

그런 다음 this page에서 win32 설치 프로그램을 다운로드했습니다. 나는 그것을 달리고 2.4.4를 위해 그것을 설치했다. (그것은 레지스트리에서 찾았다 고 말했습니다.) 3.1.1 버전으로 변경할 옵션이 없었습니다.

나는 다음 2.4.4에서 다음과 같은 오류가 발생했습니다 :

>>> import serial 

Traceback (most recent call last): 
    File "<pyshell#0>", line 1, in -toplevel- 
    import serial 
    File "C:\Python24\Lib\site-packages\serial\__init__.py", line 19, in -toplevel- 
    from serialwin32 import * 
    File "C:\Python24\Lib\site-packages\serial\serialwin32.py", line 11, in -toplevel- 
    import ctypes 
ImportError: No module named ctypes 

내가 ctypes을보고, 그것이 2.5.5 이후의 bulit 된 것을 알 수 있습니다. 승인.

ctypes을 다운로드하고 python setup.py install을 실행하십시오.

C:\path\to\ctypes-1.0.2>python setup.py install 
running install 
running build 
running build_py 
running build_ext 
error: Python was built with Visual Studio 2003; 
extensions must be built with a compiler than can generate compatible binaries. 
Visual Studio 2003 was not found on this system. If you have Cygwin installed, 
you can try compiling with MingW32, by passing "-c mingw32" to setup.py. 

달콤한 : (. 2.4.4)

나는 다음과 같은 얻을. 승인. 너무 많은 노력을하는 것 같아서 파이썬 3.1.1을 사용하고 싶습니다. C:\Python24 대신 C:\Python31\을 포함하도록 PATH 환경 변수를 편집합니다.

나는 cmd를 다시 시작하고 pyserial에 python setup.py install을 실행

C:\path\to\pyserial-2.5>python setup.py install 
running install 
running build 
running build_py 
running build_scripts 
running install_lib 
running install_scripts 

C:\path\to\pyserial-2.5> 

흥미 롭. 그런 다음 import serial을 IDLE의 Python 3.1.1에서 시도하지만 표준 ImportError을 얻습니다. 흠.

여기에 무슨 일이 일어나고 있습니까? 내가 뭔가 잘못하고 있는거야?

업데이트 : 나는 3.1.1를 사용 setup.py install를 실행하려고 : 나는이 pyserial의 잘못된 버전을 사용하고 같은

c:\path\to\pyserial-2.5>c:\python31\python.exe setup.py install 
running install 
running build 
running build_py 
running build_scripts 
creating build\scripts-3.1 
copying and adjusting examples\miniterm.py -> build\scripts-3.1 
running install_lib 
creating c:\python31\Lib\site-packages\serial 
copying build\lib\serial\loopback_connection.py -> c:\python31\Lib\site-packages 
\serial 
copying build\lib\serial\rfc2217.py -> c:\python31\Lib\site-packages\serial 
copying build\lib\serial\serialcli.py -> c:\python31\Lib\site-packages\serial 
copying build\lib\serial\serialjava.py -> c:\python31\Lib\site-packages\serial 
copying build\lib\serial\serialposix.py -> c:\python31\Lib\site-packages\serial 
copying build\lib\serial\serialutil.py -> c:\python31\Lib\site-packages\serial 
copying build\lib\serial\serialwin32.py -> c:\python31\Lib\site-packages\serial 
copying build\lib\serial\sermsdos.py -> c:\python31\Lib\site-packages\serial 
copying build\lib\serial\socket_connection.py -> c:\python31\Lib\site-packages\s 
erial 
copying build\lib\serial\win32.py -> c:\python31\Lib\site-packages\serial 
copying build\lib\serial\__init__.py -> c:\python31\Lib\site-packages\serial 
byte-compiling c:\python31\Lib\site-packages\serial\loopback_connection.py to lo 
opback_connection.pyc 
    File "c:\python31\Lib\site-packages\serial\loopback_connection.py", line 101 
    except ValueError, e: 
        ^
SyntaxError: invalid syntax 

byte-compiling c:\python31\Lib\site-packages\serial\rfc2217.py to rfc2217.pyc 
    File "c:\python31\Lib\site-packages\serial\rfc2217.py", line 370 
    except Exception, msg: 
        ^
SyntaxError: invalid syntax 

byte-compiling c:\python31\Lib\site-packages\serial\serialcli.py to serialcli.py 
c 
    File "c:\python31\Lib\site-packages\serial\serialcli.py", line 39 
    except Exception, msg: 
        ^
SyntaxError: invalid syntax 

byte-compiling c:\python31\Lib\site-packages\serial\serialjava.py to serialjava. 
pyc 
    File "c:\python31\Lib\site-packages\serial\serialjava.py", line 67 
    except Exception, msg: 
        ^
SyntaxError: invalid syntax 

byte-compiling c:\python31\Lib\site-packages\serial\serialposix.py to serialposi 
x.pyc 
    File "c:\python31\Lib\site-packages\serial\serialposix.py", line 64 
    50:  0000001, 
       ^
SyntaxError: invalid token 

byte-compiling c:\python31\Lib\site-packages\serial\serialutil.py to serialutil. 
pyc 
    File "c:\python31\Lib\site-packages\serial\serialutil.py", line 510 
    except TypeError, err: 
        ^
SyntaxError: invalid syntax 

byte-compiling c:\python31\Lib\site-packages\serial\serialwin32.py to serialwin3 
2.pyc 
byte-compiling c:\python31\Lib\site-packages\serial\sermsdos.py to sermsdos.pyc 
byte-compiling c:\python31\Lib\site-packages\serial\socket_connection.py to sock 
et_connection.pyc 
    File "c:\python31\Lib\site-packages\serial\socket_connection.py", line 49 
    except Exception, msg: 
        ^
SyntaxError: invalid syntax 

byte-compiling c:\python31\Lib\site-packages\serial\win32.py to win32.pyc 
    File "c:\python31\Lib\site-packages\serial\win32.py", line 164 
    MAXDWORD = 4294967295L # Variable c_uint 
         ^
SyntaxError: invalid syntax 

byte-compiling c:\python31\Lib\site-packages\serial\__init__.py to __init__.pyc 
running install_scripts 
creating c:\python31\Scripts 
copying build\scripts-3.1\miniterm.py -> c:\python31\Scripts 
running install_egg_info 
Writing c:\python31\Lib\site-packages\pyserial_py3k-2.5-py3.1.egg-info 


c:\path\to\pyserial-2.5> 

흠 ... 보인다. This download page은 2.5가 가장 최신 인 것처럼 보입니다. 이상한.

업데이트 2 : 모든 구문 오류가 수정되었지만 가져 오기 오류가 발생하기 시작했습니다. '

>>> import serial 
Traceback (most recent call last): 
    File "<pyshell#4>", line 1, in <module> 
    import serial 
    File "C:\Python31\lib\site-packages\serial\__init__.py", line 19, in <module> 
    from .serialwin32 import * 
    File "C:\Python31\lib\site-packages\serial\serialwin32.py", line 12, in <module> 
    import win32 
ImportError: No module named win32 
나는 .modulename 구문을하고 시도

하지만 같으면 :

if os.name == 'nt': #sys.platform == 'win32': 
    from serialwin32 import * 
elif os.name == 'posix': 
    from serialposix import * 
elif os.name == 'java': 
    from serialjava import * 

에 :

if os.name == 'nt': #sys.platform == 'win32': 
    from .serialwin32 import * 
elif os.name == 'posix': 
    from .serialposix import * 
elif os.name == 'java': 
    from .serialjava import * 

지금은 serialwin32.py에서 오류를 받고 있어요 __init__.py, 나는 변경 t 컴파일.

그 밖의 다른 조치는 무엇입니까? 누구든지이 코드가 파이썬 3에서 실행되도록 의도했다는 것을 믿기가 힘듭니다. (아마도 잘못된 버전이 있습니까?)

답변

2

우선, 왜 파이썬 2.4를 Windows에서 사용하고 있습니까? 꽤 오래되었고 상황이 개선되었습니다 (예 :ctypes) 당신은 pyserial을 위해 필요할지도 모른다.

이제 설치 질문과 관련하여, 하나의 파이썬 버전과 다른 모듈에서 모듈을 작동 시키려면 PYTHONPATH를 두드리지 마십시오. Python 3은 이전 버전과 호환되지 않으므로 Python 2.x에서 설치 한 내용에 대해 자동으로 작동하지 않습니다.

pyserial 웹 사이트에 주어진 간단한 지시가 :

다운로드 http://pypi.python.org/pypi/pyserial에서 아카이브가. 내가 두 번째 경우에 인터프리터 python3을 사용하고

# This will be suitable for python2.5 
python setup.py install 


# This is suitable for python3.1 
python3 setup.py install 

참고하십시오 pyserial-X · Y 디렉토리를 입력하고 실행 압축 파일을 푼다.

+0

내가 작업하고있는 프로젝트에 필요하므로 2.4를 사용하고 있습니다. 어떻게 명령 프롬프트에서'python'과'python3'을 가질 수 있습니까? –

+0

또한 'PYTHONPATH'라고 말하면 정확히 무엇을 말하고 있습니까? Windows 제어판에서 설정 한 경로 환경 변수를 참조하고 있는데, 명령 프롬프트가 명령을 찾는 위치를 결정합니다 (맞습니까?). 2.4 대신에 3.1을 포함하도록'path'를 변경한다면, 두 번째 코드 행과 같은 일을하는 것이 아닙니까? –

+0

python3.1.x를 설치할 때 이름이 python3 인 이진 파일을 설치 했어야합니다. 찾아보아야합니다. 좋아, 당신은 윈도우 PATH를 의미했는데, 나는 파이썬 인터프리터의 경로를 바꾸고 있다는 것을 이해했다. 아마도 파이썬 2.x (여전히 통역사에 속함으로 확인할 수 있음)를 언급하고있을 것입니다. 그러나 방법은 전체 경로를 사용하는 것입니다. 'C : \ Python31 \ python3.exe' –

0

웹 사이트에서 설치 지침을 따랐을 때 나는 당신과 비슷한 문제가있었습니다.

>>> import serial 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "serial/__init__.py", line 21, in <module> 
    from serial.serialposix import * 
    File "serial/serialposix.py", line 58 
    except IOError, e: 
       ^
SyntaxError: invalid syntax 

그것은 당신이 단지 필요 밝혀 : 나는 import serial를 실행할 때이 말한대로, 나는 압축을 푼 다운로드 폴더에 탐색하고 그러나

# This is suitable for python3.1 python3 setup.py install 

를 실행, 나는 유사한 구문 오류가 발생했습니다 설치 디렉토리
을 떠납니다. 다운로드 폴더에는 새로 설치된 직렬 모듈을 덮어 쓰는 serial이라는 폴더가 있습니다.

관련 문제