Python中._pth文件的作用及说明

 更新时间:2024年02月26日 16:05:18   作者:顺其自然~  
这篇文章主要介绍了Python中._pth文件的作用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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变量,在弹出对话框的变量值文本中添加新的模块目录,目录之前使用逗号分隔。

.

备注:

此种方法,需要重新打开要执行的导入模块的python文件,否则不生效。

只在当前版本中有效。

4. 以主程序的形式执行

christmastree.py文件内容为:

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

.

main.py文件内容为:

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

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

输出结果为:

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

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

输出结果:

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

说明:

通俗的理解__name__ == '__main__':

假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');

在你自己眼中,你是你自己(__name__ == '__main__')。

python为动态解释型语言,也就是从脚本第一行开始运行,没有统一的入口。

每一个模块(.py)都有一个__name__,当模块被直接执行时,此时__name__ '__main__';而被其他模块导入时,此时__name__为被导入的模块名称,程序执行被导入模块的所有代码。

但更多时候只是希望执行部分代码,此时如红框处表示,可以加上if __name__ == '__main__',作为文件的入口。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论