我的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
我抬头一看,并认为它已经从2.5.5储存卡英寸好。
我下载,并运行python setup.py install
。 (2.4.4)
我得到如下:
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.
甜。好。这似乎是太多的努力,所以我想尝试使用Python 3.1.1。我编辑我的PATH环境变量以包含C:\Python31\
而不是C:\Python24
。
我重新启动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>
有趣。然后我尝试从Python 3.1.1中的IDLE中尝试import serial
,但是我得到标准ImportError
。嗯。
这是怎么回事?难道我做错了什么?
更新:我试着使用3.1.1运行setup.py install
:
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>
嗯...看起来像我使用pyserial的版本不正确。 This download page使它看起来像2.5是最新的。奇。
更新2:我修复了所有语法错误,但开始导入错误。在__init__.py
,我改变了:
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
:
>>> 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
语法,但止跌”编译。
我还能在这里做什么?我很难相信任何人希望这个代码在Python 3上运行。(也许我得到了错误的版本?)
我正在使用2.4,因为我正在处理的项目需要它。我如何在命令提示符下使用'python'和'python3'? – 2011-03-03 15:22:42
另外,当你说'PYTHONPATH'时,你指的是什么?我指的是Windows控制面板中设置的路径环境变量,它决定了命令提示符查找命令的位置(对吗?)。如果我将'path'改为包含3.1而不是2.4,是不是与第二行代码做同样的事情? – 2011-03-03 15:43:15
当您安装python3.1.x时,它必须已经安装了一个名为python3的二进制文件,请查找它。好吧,你的意思是windows PATH,我知道你正在改变Python解释器的路径。可能它仍然是指Python 2.x(你可以通过解释器来确认)。但方式是使用完整的路径。 'C:\ Python31 \ python3.exe' – 2011-03-03 15:53:10