为什么更新sys.path不会影响python将搜索的目录列表

时间:2014-06-17 21:10:57

标签: python

我正在尝试导入串口模块。但这是投掷错误

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会搜索的目录列表?

1 个答案:

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