Back to home

Python路径小课堂

1.模块

对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义。
在“模块”之上有“包”,主要是为了方便组织和管理模块。
在Python中一个特殊定义的文件夹是一个包,可以打包为egg文件

运行Python应用或引用Python模块,Python解释器要有一个查找的过程。
只要Python模块在其执行环境配置的搜索路径中,并且其所在位置是包结构的一部分,那么我们就可以引用该模块。
import语句可以写在文档中的任何位置,甚至if语句中,以便更好的控制模块引用。
还可以通过as语句,使用另一个变量名进行引用,以避免变量名冲突。

2.Python搜索模块的路径:

1)程序的主目录
2)PTYHONPATH目录(如果已经进行了设置)
3)标准连接库目录(一般在/usr/local/lib/python2.X/)
4)任何的.pth(如果存在的话)后缀的文本文件中一行一行的地列出目录。
这四个组建组合起来就变成了sys.path了

3.查看python的模块路径方法是

import sys
print sys.path

这个就会打印出所有的模块路径。

4. 加入新的模块路径的三种方法

  1. 添加环境变量PYTHONPATH,python会添加此路径下的模块,在.bash_profile文件中添加如下类似行:
    export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
  2. 在site-packages路径下添加一个路径配置文件,文件的扩展名为.pth,内容为要添加的路径即可
  3. sys.path.append()函数添加搜索路径,参数值即为要添加的路径。

上边的第2种方法,如果本来python就没有添加上site-packages目录,那第二个方法其实也是用不了的。
推荐使用方法1
使用方法3的时候,避免使用硬编码的绝对路径,而应使用相对路径。
python获取文件上一级目录:取文件所在目录的上一级目录
os.path.abspath(os.path.join(os.path.dirname('settings.py'),os.path.pardir))
os.path.pardir是父目录,os.path.abspath是绝对路径

参考

http://wecatch.me/blog/2016/05/28/python-module-path-find/

https://www.jianshu.com/p/cd421014cfbb