我正在尝试在Windows7上运行MinimalModbus (它在引擎盖下使用pyserial ),我已经将我的问题简化为:以下是foo.py的全部内容:
#!/usr/bin/env python
import sys
import serial
print(sys.version)
print(serial.PARITY_NONE)当我运行foo.py时,python找不到一些pyserial属性:
E:\>py -3.6 foo.py
3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
Traceback (most recent call last):
File "foo.py", line 5, in <module>
print(serial.PARITY_NONE)
AttributeError: module 'serial' has no attribute 'PARITY_NONE'当我在OS X (High Sierra,10.13.2)上运行相同的脚本时,我得到了正确的输出('N')。
下面是我的Windows环境中pip freeze和ver的输出:
E:\>py -3.6 -m pip freeze
future==0.16.0
iso8601==0.1.12
MinimalModbus==0.7
pyftdi==0.28.2
pyserial==3.4
pyusb==1.0.2
PyYAML==3.12
serial==0.0.27
UniCurses==1.2
E:\>ver
Microsoft Windows [Version 6.1.7601]有什么建议吗?
更新
似乎我得到了错误的串行模块:
E:\>py -3.6
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> help(serial)
Help on package serial:
NAME
serial
DESCRIPTION
``serial`` is an object serialization/deserialization library intended to fa
cilitate authoring of API models which are
readable and introspective, and to expedite code and data validation and tes
ting. ``serial`` supports JSON, YAML, and
XML...。这根本不是我喜欢的pyserial模块。我遗漏了什么?
发布于 2018-01-23 20:54:27
这是一种令人沮丧的解决方案。
我注意到了pip freeze输出中有问题的serial模块
E:\>py -3.6 -m pip freeze
future==0.16.0
iso8601==0.1.12
MinimalModbus==0.7
pyftdi==0.28.2
pyserial==3.4
pyusb==1.0.2
PyYAML==3.12
serial==0.0.27 <<< this one
UniCurses==1.2我把它删除了:
py -3.6 -m pip uninstall serial..。但这并没有解决问题。但是,随后卸载并重新安装pyserial完成了此操作:
>>> py -3.6 -m pip uninstall pyserial
>>> py -3.6 -m pip install pyserial
>>> py -3.6 foo.py
3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
N现在好多了!
https://stackoverflow.com/questions/48401900
复制相似问题