在Python中定位和执行模块

在Python中定位和执行模块

在本文中,我们将讨论用户如何定位Python中的模块以及用于执行模块的Python函数。

定位Python中的模块

当用户导入模块时,Python解释器将在当前目录中搜索该模块。如果在目录中找不到模块,则解释器将在名为PYTHONPATH的shell变量中搜索每个目录。如果解释器在shell中找不到它,那么它将检查默认路径。在UNIX中,默认路径为:/usr/local/lib/python/。

模块的搜索路径存储在系统模块sys中的sys.path变量中。该变量包含当前目录,即PYTHONPATH,以及与安装相关的默认路径。

PYTHONPATH变量

PYTHONPATH变量是一个基于平台的变量,由目录列表组成。它的语法与shell变量的PATH相同。

来自Windows系统的PYTHONPATH:

set PYTHONPATH = c: \\python3\\lib;

来自UNIX系统的PYPTHONPATH

set PYTHONPATH = /usr/local/lib/python

在Python中执行模块

从命令行选项中,使用-m选项用于定位给定模块的路径,并将其作为程序的main模块执行。runpy模块是Python的标准模块,用于在内部支持这种机制。runpy模块允许使用Python模块的命名空间来定位脚本,而不是文件系统。

runpy模块定义了两个函数:

  1. run_module()
  2. run_path()

run_module()

run_module()函数用于执行包含特定模块的代码,并返回模块全局字典的结果。

module_name参数应该是实际的模块名。假设模块的名称引用的是任何包而不是普通的模块。在这种情况下,将导入该包,并执行该包内的main子模块,并返回模块全局字典的结果。

在模块执行之前,特殊的全局变量namespecfilecachedloaderpackage会在全局字典中设置。

如果模块名为包名,则name设置为module_name +’.main‘;否则,将设置为module_name参数。

filecachedloaderpackage则根据模块规范设置为普通值。

run_path()

run_path()函数用于在给定路径的文件中执行程序,并将模块全局字典作为结果返回。给定的路径可以指向Python源文件、编译后的字节码文件,或包含main模块的有效sys.path条目,例如包含顶级main.py文件的zip文件。

在模块执行之前,特殊的全局变量namespecfilecachedloaderpackage会在全局字典中设置。

如果这个可选参数run_name不等于None,则将name变量设置为run_name;否则,将设置为

示例:

让我们看一个runpy模块的示例:

首先,用户需要将以下文件保存为名为runpy_example.py的脚本。

def add(p, q, r, s, t):
   return p + q + r + s + t
def main():
 p = 4
 q = 6
 r = 2
 s = 8
 t = 7
 print ("sum of p, q, r, s, t = ")
 print (add(p,q,r,s,t))
 return
if __name__=='__main__':
   main()

然后,用户将使用以下命令执行上述文件:

import runpy_example as runp
runp.main()

输出:

sum of p, q, r, s, t = 
27

尽管如此,用户可以在不导入该文件的情况下执行它:

import runpy
runpy.run_module('runpy_example', run_name='__main__')

输出:

sum of p, q, r, s, t = 
27

在Python中定位和执行模块

用户还可以使用run_path()函数:

runpy.run_path('runpy_example.py', run_name='__main__')

输出:

sum of p, q, r, s, t = 
27

在Python中定位和执行模块

如前所述,runpy还支持Python命令行的-m开关:

C:\python37>python -m runpy_example

结论

在本文中,我们讨论了用户如何使用Python标准模块runpy模块的函数来定位模块并执行它们。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程