本文共 1819 字,大约阅读时间需要 6 分钟。
一个文件被看作一个独立模块,一个模块也可以被看作是一个文件。模块的文件名就是模块的名字加上扩展名.py。
模块内的函数的完整名字是通过句点标识符指定的,防止了名称冲突。例如:tkinter.Tk()
路径搜索和搜索路径是两个不同的概念,前者指查找某个文件的操作,后者是去查找一组目录。
通常我们导入模块,就回去路径中搜索,如果模块没在搜索路径中,就会导致路径搜索失败:# 正常的模块导入PS C:\Code> pythonPython 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> import tkinter>>># 失败的模块导入>>> import xxxTraceback (most recent call last): File "", line 1, in ModuleNotFoundError: No module named 'xxx'>>>
默认的搜索路径是在模块安装是指定的,但是也是可以被修改的。
在python解释器启动后,就可以访问搜索路径,通常被保存在sys模块的sys.path变量中。而且其输出为一个包含有各个独立路径的列表。>>> import sys>>> sys.path['', 'C:\\Users\\yanta\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip', 'C:\\Users\\yanta\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\yanta\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\yanta\\AppData\\Local\\Programs\\Python\\Python36', 'C:\\Users\\yanta\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']>>>
我们可以对其进行修改,使用append()方法即可:
>>> sys.path.append('/home/wesc/py/lib')
此外使用sys.modules可以找到当前导入了哪些模块和他们的来处。与sys.path不同,sys.modules是一个字典,使用模块名作为键(key),对应物理地址作为值(value):
>>> sys.modules{ 'builtins':, 'sys': , '_frozen_importlib': , '_imp': , '_warnings': , '_thread': , '_weakref': , '_frozen_importlib_external': , '_io': , 'marshal': , 'nt': , 'winreg': , 'zipimport': , 'encodings': , 'codecs': , '_codecs': , 'encodings.aliases': , 'encodings.utf_8': , '_signal': , '__main__': , 'encodings.latin_1': , 'io': , 'abc': , '_weakrefset': , 'site': , 'os': , 'errno': , 'stat': , '_stat': , 'ntpath': , 'genericpath': , 'os.path': , '_collections_abc': , '_sitebuiltins': , 'sysconfig': , 'atexit': }
转载地址:http://ggarb.baihongyu.com/