我正在尝试导入串口模块。但这是投掷错误
AttributeError: 'module' object has no attribute 'RawIOBase'
后来我发现还有一个目录名称' io'和' init.py'文件存在于目录中。因此,当我使用print(io)打印时,它正在显示
<module 'io' from '/projects/phx/tools/io/__init__.pyc'>
而不是
<module 'io' from '/usr/lib/python2.6/io.pyc'>
要更新PYTHONPATH,我在程序中使用了以下行
sys.path.insert(0, "/usr/lib64/python2.6")
在此之后,我将导入序列如下。
exec("import serial")
但它没有解决问题。我收到同样的错误。
如果我在bashrc文件中将"/usr/lib64/python2.6"
添加到PYTHONPATH,它可以正常工作。
任何人都可以帮我理解为什么sys.path不影响python会搜索的目录列表?
答案 0 :(得分:1)
仅供参考,您可以使用
加入系统路径>>> ':'.join(sys.path)
'/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/PILcompat:/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/pymodules/python2.7'
但你不应该像你一样设置env['PYTHONPATH']
。
您需要做的就是像这样编辑系统路径:
sys.path.insert(0, "/usr/lib64/python2.6")
此行之后的任何导入都会首先查看/usr/lib64/python2.6
。
import sys
sys.path.insert(0, "/usr/lib64/python2.6")
import serial