python的模块搜索路径 pythonPath

Python中的PYTHONPATH环境变量

PYTHONPATH是Python中一个重要的环境变量,用于在导入模块的时候搜索路径.可以通过如下方式访问:

>>> import sys
>>> 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',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
  • 可以看到,路径列表的第一个元素为空字符串,代表的是相对路径下的当前目录.
  • 由于在导入模块的时候,解释器会按照列表的顺序搜索,直到找到第一个模块,所以优先导入的模块为同一目录下的模块.

Python搜索模块的路径

  • 程序的主目录
  • PTYHONPATH目录
  • 标准连接库目录(一般在/usr/local/lib/python2.X/)
  • 任何的.pth文件的内容(如果存在的话).新功能,允许用户把有效果的目录添加到模块搜索路径中去 .pth后缀的文本文件中一行一行的地列出目录。

这四个组建组合起来就变成了sys.path了

修改PYTHONPATH

导入模块时搜索路径的顺序也可以改变.这里分两种情况:

  • 通过sys.path.append(),sys.path.insert()等方法来改变,这种方法当重新启动解释器的时候,原来的设置会失效.
  • 改变PYTHONPATH,这种设置方法永久有效:

在这种情况下,可以通过在sys.path列表显示的路径中添加.pth文件来实现

1,临时添加

import sys
sys.path
sys.path.append(path) 

2,使用pth文件永久添加

使用pth文件,在 site-packages 文件中创建 .pth文件,将模块的路径写进去,一行一个路径, 以下是一个示例,pth文件也可以使用注释:

# .pth file for the  my project(这行是注释)
E:\DjangoWord
E:\DjangoWord\mysite
E:\DjangoWord\mysite\polls

这个不失为一个好的方法,但存在管理上的问题,而且不能在不同的python版本中共享

3,使用PYTHONPATH环境变量

使用PYTHONPATH环境变量,在这个环境变量中输入相关的路径,不同的路径之间用逗号(英文的!)分开,如果PYTHONPATH 变量还不存在,可以创建它! 路径会自动加入到sys.path中,而且可以在不同的python版本中共享,应该是一样较为方便的方法

你可能感兴趣的:(python)