首先我们需要明确python是如何导入模块的。
python在导入模块时的搜索路径:
1)、程序的主目录
2)、PTYHONPATH目录(如果已经进行了设置)
3)、标准连接库目录(一般在/usr/local/lib/python2.X/)
4)、任何的.pth文件的内容(如果存在的话).新功能,允许用户把有效果的目录添加到模块搜索路径中去
.pth后缀的文本文件中一行一行的地列出目录。
这四个目录组合起来就是这四个组合起来就是sys.path。查看sys.path
import sys
print(sys.path)
在python的工程中,有时会遇到文件无法引用的情况。此时Pycharm ide
支持文件跳转,可是当项目运行时,却提示找不到模块,针对这种情况我们的解决方法如下。
解决:
1、在py文件的顶部,引入根目录。
import os
import sys
curdir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.dirname(curdir))
2、检测文件项目的根目录。
3、python中有一个.pth文件,该文件的用法是:
首先xxx.pth文件里面会书写一些路径,一行一个。
将xxx.pth文件放在特定位置,则可以让python在加载模块时,读取xxx.pth中指定的路径。
如此一来就可以很简便的书写import语句,且灵活控制自己写的模块了。例如:
先将myproj的路径加入到myproj.pth文件中,再讲myproj.pth文件放置在__特定目录中__,然后再项目的代码中,无论哪个目录层级,都可以直接使用:
from myproj import conf
from myproj.lib import xlib
上面提到的__特定目录__是通过site模块下的getsitepackages方法获得的,该方法返回一个路径组成的list:
>>> import site
>>> site.getsitepackages()
['/opt/python27/lib/python2.7/site-packages', '/opt/python27/lib/site-python']