2

Windows7マシンにPython2.4.4と3.1.3があります。PySerialを使用したいのですが。

内蔵されていると聞いたのでimport serial、両方のバージョンで試してみました。両方ともを引き起こしましたImport Error

次に、このページから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以降に突入していることがわかります。Ok。

ダウンロードctypesして実行します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.

甘い。Ok。大変な作業のようですので、Python3.1.1で試してみたいと思います。PATH環境変数を編集して、C:\Python31\の代わりにインクルードしますC:\Python24

cmdを再起動python setup.py installし、pyserialで実行します。

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、Python 3.1.1でIDLEを使用しようとしましたが、標準を取得しましたImportError。うーん。

ここで何が起こっているのですか?私は何か間違ったことをしていますか?

更新setup.py install: 3.1.1を使用して実行しようとしました:

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を使用しているようです。このダウンロードページでは、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が、コンパイルされませんでした。

ここで他に何ができますか?誰かがこのコードをPython3で実行することを意図しているとは信じられません(おそらく私は間違ったバージョンを入手しましたか?)

4

2 に答える 2

2

まず、なぜ Windows で python 2.4 を使用しているのですか? それはかなり古く、物事は改善されています(ctypesなど)。pyserialにはそれらが必要になる場合があります。

さて、インストールに関する質問ですが、ある python バージョンと別のバージョンでモジュールを動作させるために、PYTHONPATH に手を出さないでください。Python 3 は下位互換性がないため、Python 2.x 用にインストールしたものに対して自動的に動作することはありません。

pyserial の Web サイトには、次の簡単な手順が記載されています。

http://pypi.python.org/pypi/pyserialからアーカイブをダウンロードします。アーカイブを解凍し、pyserial-xy ディレクトリに入り、次を実行します。

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


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

python32 番目のケースではインタープリターを使用していることに注意してください。

于 2011-03-03T05:43:34.777 に答える
0

Web サイトのインストール手順に従ったときに、あなたと同様の問題が発生しました。それが言ったように、解凍されたダウンロードフォルダーに移動して実行しました

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

ただし、 を実行import serialすると、同様の構文エラーが発生しました。

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

インストールディレクトリを離れるだけでよいことがわかりました。ダウンロード フォルダーにはserial、新しくインストールされたシリアル モジュールを上書きするという名前のフォルダーがあります。

于 2015-03-26T16:36:45.170 に答える