当前位置: 首页 > 编程笔记 >

定位和执行Python模块(运行)

艾鹭洋
2023-03-14
本文向大家介绍定位和执行Python模块(运行),包括了定位和执行Python模块(运行)的使用技巧和注意事项,需要的朋友参考一下

命令行选项的–m选项搜索给定的模块并将其作为__main__模块执行。Python标准模块中的runpy模块在内部支持此机制,该脚本允许使用Python模块命名空间而不是文件系统来定位脚本。

该模块定义了两个功能

run_module()

该函数执行指定模块的代码,并返回生成的模块全局字典。

mod_name参数应为绝对模块名称。如果模块名称引用的是软件包而不是普通模块,则导入该软件包,然后执行该软件包中的__main__子模块,并返回结果模块全局字典。

在执行模块代码之前,会在全局字典中设置特殊的全局变量__name__,__spec__,__file__,__cached__,__loader__和__package__。

如果命名模块是软件包,则__name__设置为mod_name +'.__ main__',否则设置为mod_name参数。

__file__,__cached__,__loader__和__package__根据模块规范设置为正常。

run_path()

此函数在给定路径下执行文件中的代码,并返回生成的模块全局字典。提供的路径可以引用Python源文件,编译的字节码文件或包含__main__模块的有效sys.path条目(例如,包含顶级__main__.py文件的zip文件)。

在执行模块代码之前,会在全局字典中设置特殊的全局变量__name__,__spec__,__file__,__cached__,__loader__和__package__。

如果此可选参数不为None,则将__name__设置为run_name,否则将其设置为'<run_path>'。

示例

将以下脚本另存为runpyeample.py

#runpy example
def add(x,y):
   return x+y
def main():
   x,y = 10,20
   print (add(x,y))
   return
if __name__=='__main__':
   main()

执行以上示例的通常过程如下

>>> import runpyexample as rp
>>> rp.main()
30
>>>

但是,我们现在使用runpy模块来执行它而不实际导入它。

>>> import runpy
>>> runpy.run_module('runpyexample', run_name='__main__')
30

您也可以使用run_path()函数。

>>> runpy.run_path('runpyexample.py', run_name='__main__')
30

如前 ,runpy支持Python命令行的–m开关。

E:\python37>python -m runpyexample
30
 类似资料:
  • 问题内容: 伙计们,我的模块中有很多python代码,这些模块位于多个python软件包中,现在我需要创建一个包含所有这些文件的python可执行模块或文件,因此它将在Windows和Linux服务器上运行。有哪些可能的解决方案,以及如何解决? 问题答案: 这就是鸡蛋文件的用途。请阅读以下内容:将python库/应用程序打包为.egg文件有什么好处?

  • 我想创建一个运行多个python项目的脚本。每个项目都是阻塞的(意味着每个项目都应该永远运行),所以这个脚本必须并行运行每个项目。此外,我希望在关闭主shell之后,所有这些进程都关闭。这是我想出的shell代码 我尝试使用&使python进程异步运行,但是脚本在第二行之后没有继续,只有第一个项目在运行。 有没有一种方法可以运行所有的python进程?

  • No alarms and no surprises. — Radiohead 我讨厌惊喜。有时你的 Puppet 配置清单没有像你预期的那样执行, 或者在你不知情的情况下,或许别人又提交了改变。 不管哪种情况发生,在 Puppet 执行配置清单之前能精确地获知它将要执行些什么是非常必要的。 例如,若更新了一个生产服务的配置文件并重新启动该服务,很可能会导致非计划性的停机时间。 又如,有时人为的手

  • 问题内容: 在复杂的应用程序中,我需要导入用户提供的“脚本”。理想情况下,脚本应具有 所以我只是 然而,大家都知道,用户的脚本 执行 尽快运行。这意味着脚本可以是这样的: 脚本一经产生就被调用。 我需要的是一种方法: 首先检查它是否具有init(),execute()和cleanup() 如果它们存在,一切都会很好 如果不存在,抱怨 不要运行任何其他代码,或者至少不要运行,直到我知道没有init(

  • 问题内容: 为了测试使用更基本的构建块(在我的情况下使用Nand,Or和And)构建Xor操作,我需要能够执行Not操作。内置似乎只用一位完成此操作。如果我做: 我应该得到,但是我只是得到。我究竟做错了什么?还是Python只是缺少此基本功能? 我知道Python具有内置的Xor函数,但我一直在使用Python来测试需要构建Xor门的HDL项目/课程的内容。我想在Python中进行测试,但是我不能

  • 问题内容: 许多第三方Python模块都有一个属性,该属性保存该模块的版本信息(通常类似或),但有些则不然。 此类模块的特定示例是libxslt和libxml2。 我需要检查这些模块在运行时是否使用了正确的版本。有没有办法做到这一点? 潜在的解决方案是在运行时读取源代码,对其进行哈希处理,然后将其与已知版本的哈希进行比较,但这很讨厌。 有更好的解决方案吗? 问题答案: 我会远离哈希。正在使用的li