Python 将“名称”设置为'__主&';在执行前打开模块

Python 将“名称”设置为'__主&';在执行前打开模块,python,python-3.x,Python,Python 3.x,我目前有一个代码,它检查是否为,如果是这样的话,它会调用一些函数。目前,我通过生成另一个python子流程来执行此代码,但将其作为模块导入会更干净。问题是这些模块中没有main函数,而在\uuuu name\uuuu=='\uuuuu main\uuuu'下执行的函数则有所不同。我真正拥有的唯一选项是在执行模块之前设置\uuu name\uuu属性。最好的方法是什么?我最后做的是: imp\u新模块=类型(系统) 新模块=导入新模块(模块名称) 新模块。uuuu指令uu[''名称uuuu']='

我目前有一个代码,它检查
是否为
,如果是这样的话,它会调用一些函数。目前,我通过生成另一个python子流程来执行此代码,但将其作为模块导入会更干净。问题是这些模块中没有
main
函数,而在
\uuuu name\uuuu=='\uuuuu main\uuuu'
下执行的函数则有所不同。我真正拥有的唯一选项是在执行模块之前设置
\uuu name\uuu
属性。最好的方法是什么?

我最后做的是:

imp\u新模块=类型(系统)
新模块=导入新模块(模块名称)
新模块。uuuu指令uu[''名称uuuu']='\ uuuuuu主uuu'
exec(open(scriptname).read(),新模块

这与importlib内部构件的功能类似,但确实跳过了一些属性。

我最后做的是:

imp\u新模块=类型(系统)
新模块=导入新模块(模块名称)
新模块。uuuu指令uu[''名称uuuu']='\ uuuuuu主uuu'
exec(open(scriptname).read(),新模块
这与importlib内部构件的功能类似,但会跳过一些属性。

使用库

使用图书馆


为什么要在导入时执行
if
时添加
if
函数?这不是我的代码。如果你不能只创建
main
函数,我建议不要导入此文件。继续按你的方式运行它。除此之外,如果需要运行代码两次,会发生什么?你不能只是重新导入它。如果您无法更改代码,那么尝试将此代码作为一个模块使用会有很多复杂的问题。这听起来像是一个错误。你能解释一下为什么要执行所有这些分支,以及代码的用途吗?如果中的是的话,就把代码变成一个方法!为什么要在导入时执行
if
时添加
if
函数?这不是我的代码。如果你不能只创建
main
函数,我建议不要导入此文件。继续按你的方式运行它。除此之外,如果需要运行代码两次,会发生什么?你不能只是重新导入它。如果您无法更改代码,那么尝试将此代码作为一个模块使用会有很多复杂的问题。这听起来像是一个错误。你能解释一下为什么要执行所有这些分支,以及代码的用途吗?如果中的是的话,就把代码变成一个方法!
runpy.run_module(module_name, run_name= "__main__")