Python在遍历已知的库文件目录过程中,如果见到一个._pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,于是 .pth 文件说指明的库也就可以被 Python 运行环境找到了。
python中有一个.pth文件,该文件的用法是:

首先xxx._pth文件里面会书写一些路径,一行一个
将xxx._pth文件放在特定位置,则可以让python在加载模块时,读取xxx._pth中指定的路径。

在python中,一个扩展名.py的文件就是一个模块

1. 使用import语句导入模块

import modulename 导入文件名为modulename.py的所有模块

import modulename [as alias] 设置别名

备注:使用import导入模块后,每执行一条import语句会创建一个新的命名空间,在该命名空间中执行与.py文件相关的所有语句。在执行时,需要在具体的变量、函数和类名前加上”模块名.”。

2. 使用from….import语句导入模块

from modelname import member: 导入某个变量、函数或者类等。

from modelname import *:导入全部定义

3. 模块搜索顺序

当import 导入模块之后,会按照以下顺序进行查找:

1)当前目录下查找

2)在PYTHONPATH下的每个目录中查找

3)到python默认安装目录下查找

上面的目录可以通过sys的sys.path查看

import sysprint(sys.path)

输出结果:

['E:PyProjectChapter13', 'E:PyProject', 'D:python3python38.zip', 'D:python3DLLs', 'D:python3lib', 'D:python3', 'E:PyProjectvenv', 'E:PyProjectvenvlibsite-packages', 'E:PyProjectvenvlibsite-packagessetuptools-40.8.0-py3.8.egg', 'E:PyProjectvenvlibsite-packagespip-19.0.3-py3.8.egg']

可通过以下3种方式将指定的目录加到path中

a. 临时加入

import syssys.path.append('E:/')print(sys.path)

输出结果

['E:PyProjectChapter13', 'E:PyProject', 'D:python3python38.zip', 'D:python3DLLs', 'D:python3lib', 'D:python3', 'E:PyProjectvenv', 'E:PyProjectvenvlibsite-packages', 'E:PyProjectvenvlibsite-packagessetuptools-40.8.0-py3.8.egg', 'E:PyProjectvenvlibsite-packagespip-19.0.3-py3.8.egg', 'E:/']

备注:只在当前文件的窗口中有效,窗口关闭后即失效。

b. 增加.pth文件

在python安装目录下的Libsite-packages中(我的在D:\python3\Libsite-packages),创建扩展名为.pth的文件,文件名自定,在该文件中添加要导入的目录

备注:此种方法,需要重新打开要执行的导入模块的python文件,否则不生效。只在当前版本中有效。

c. 在PYTHONPATH环境变量中添加

打开windows的“环境变量”对话框,若没有PYTHONPATH则需要添加,否则双击PYTHONPATH变量,在弹出对话框的变量值文本中添加新的模块目录,目录之前使用逗号分隔。

aefa2287ebcc797a6348ba68cca0e590.png

备注:此种方法,需要重新打开要执行的导入模块的python文件,否则不生效。只在当前版本中有效。

4. 以主程序的形式执行

christmastree.py文件内容为:

pinetree = '我是一颗松树'
def fun_christmastree(): ''' 功能:一个梦 无返回值 ''' 
    pinetree = '挂上彩灯、礼物.....我变成一颗圣诞树'
    print(pinetree)

5e5ff8348e512b344c7b5c59ea593717.png

main.py文件内容为:

import christmastreeprint('全局变量的值为: ', christmastree.pinetree)

第一次使用灰色框中的内容:

输出结果为:

下雪了.....=================开始做梦......==============挂上彩灯、礼物.....我变成一颗圣诞树=================梦醒了......==============我身上落满雪花. 我是一颗松树-_-

第二次使用红色框中的代码:

输出结果:

全局变量的值为: 我是一颗松树

说明:

通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')。python为动态解释型语言,也就是从脚本第一行开始运行,没有统一的入口。

每一个模块(.py)都有一个__name__,当模块被直接执行时,此时__name__ '__main__';而被其他模块导入时,此时__name__为被导入的模块名称,程序执行被导入模块的所有代码。但更多时候只是希望执行部分代码,此时如红框处表示,可以加上if __name__ == '__main__',作为文件的入口。

来源:顺其自然~

物联沃分享整理
物联沃-IOTWORD物联网 » Python中._pth文件的作用

发表评论