Python中._pth文件的作用
Python在遍历已知的库文件目录过程中,如果见到一个._pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,于是 .pth 文件说指明的库也就可以被 Python 运行环境找到了。python中有一个.pth文件,该文件的用法是:首先xxx._pth文件里面会书写一些路径,一行一个。将xxx._pth文件放在特定位置,则可以让python在加载模块时,读取xxx._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__',作为文件的入口。
更多推荐
所有评论(0)