Python在哪里寻找模块?
模块只是一个Python .py 文件,我们可以从中使用另一个文件中的函数、类和变量。要在另一个文件中使用这些东西,我们需要先在该文件中导入该模块,然后才能使用它们。模块可以存在于各种目录中。
在本文中,我们将讨论Python在哪里查找模块。
Python通过 3 个步骤查找模块:-
- 首先,它在当前目录中搜索。
- 如果未找到,则在 shell 变量 PYTHONPATH 中的目录中搜索
- 如果这也失败Python检查的时间配置目录的安装相关的列表的Python安装
现在我们将讨论每个步骤:
步骤1:首先Python在当前目录中搜索。在当前目录中,我们指的是调用模块的文件所在的目录。我们可以通过 os.getcwd() 方法从Python的 os 模块检查工作目录。此方法返回的目录称为当前目录。获取当前目录的代码是:
Python
# importing os module
import os
# printing the current working directory
print(os.getcwd())
Python
# importing the sys module
import sys
# printing sys.path variable of sys module
print(sys.path)
Python
# importing the sys module
import sys
# printing sys.path variable of sys module
print(sys.path)
上面代码的输出将是当前工作目录,它将首先搜索要导入的模块。
第二步:如果当前目录下没有找到需要导入的模块。然后Python将在PYTHONPATH中搜索它,它是一个目录名称列表,语法与shell变量PATH相同。要知道 PYTHONPATH 中的目录,我们可以简单地通过 sys 模块获取它们。 sys.path 为我们提供了在需要导入时搜索模块的所有路径的列表。要查看这些目录,我们必须编写以下代码:
Python
# importing the sys module
import sys
# printing sys.path variable of sys module
print(sys.path)
输出
['/home', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk' , '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/ usr/lib/python2.7/dist-packages']
['/home', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk' , '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/ usr/lib/python2.7/dist-packages']
第 3 步:如果在上述 2 个步骤中未找到该模块,则Python解释器将尝试在安装Python时配置的安装相关目录列表中找到它。这些目录也包含在 sys 模块的 sys.path 变量中,可以通过与上述步骤相同的方式获知。代码将是:
Python
# importing the sys module
import sys
# printing sys.path variable of sys module
print(sys.path)
输出
['/home', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk' , '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/ usr/lib/python2.7/dist-packages']
['/home', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk' , '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/ usr/lib/python2.7/dist-packages']