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