- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在具有 __main__.py
的项目中, 而不是
# __main__.py
# def main...
if __name__ == "__main__":
main()
# __main__.py
# def main...
main()
if __...
线。随叫随到
python -m pytest --doctest-modules
.
__main__.py
时出错的地方?也许这是一个错误?
__main__.py
:
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― package/__main__.py ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
package/__main__.py:58: in <module>
args = parser.parse_args()
/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py:1755: in parse_args
args, argv = self.parse_known_args(args, namespace)
/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py:1787: in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py:2022: in _parse_known_args
', '.join(required_actions))
/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py:2508: in error
self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py:2495: in exit
_sys.exit(status)
E SystemExit: 2
--------------------------------------------------------------------------------------- Captured stderr ---------------------------------------------------------------------------------------
usage: pytest.py [-h] [--sum] N [N ...]
pytest.py: error: the following arguments are required: N
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Results (4.23s):
最佳答案
可以跳过 if __name__ == '__main__'
在大多数常规脚本中保护,而不仅仅是 __main__.py
.守卫的目的是在文件作为模块导入而不是作为程序的入口点运行时使特定代码不运行,而是导入__main__.py
因为一个模块通常使用它是错误的。
即使与 multiprocessing
,您可能认为您需要一个 if __name__ == '__main__'
守卫,但在 __main__.py
的情况下,实际上并没有帮助。俗话说multiprocessing
在 spawn 或 forkserver 模式下导入 __main__
脚本作为一个模块,但这是对实际行为的简化。特别是,真实行为的一部分是,如果 spawn 模式检测到主脚本是 __main__.py
, it just doesn't try to load the original __main__
at all :
# __main__.py files for packages, directories, zip archives, etc, run
# their "main only" code unconditionally, so we don't even try to
# populate anything in __main__, nor do we make any changes to
# __main__ attributes
current_main = sys.modules['__main__']
if mod_name == "__main__" or mod_name.endswith(".__main__"):
return
__main__.py
当我测试它时,但 forkserver 通过稍微不同的代码路径,我不确定它决定在哪里跳过
__main__.py
.
if __name__ == '__main__'
没有任何问题。 guard 。不使用它比使用它有更多奇怪的边缘情况,有经验的读者会因为它的缺失而不是它的存在而感到困惑。即使在
__main__.py
,我可能仍然会使用守卫。
__main__.py
出于某种原因,也许要在那里定义单元测试函数,那么您将需要守卫。但是,将任何值得导入的内容移出
__main__.py
可能更有意义。并进入另一个文件。
关于python - __main__.py 中是否需要 "if __name__ == ' __main_ _'"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61417426/
给定一个简单的脚本,例如: #!/usr/bin/env python3 if __name__ == "__main__": print("Hello World") 如何在不执行 if _
以下这些成语(编写一个也是可执行/可运行的模块)是否具有设计模式的名称? 在 Python 中,我们也可以使用 if name == 'main': idiom 将模块编写为可执行文件: if __n
在我的 python 文件中,我有一个带有一些参数的函数,在同一个文件中,我有一个 if __name__ == "__main__" 子句,它使用一组特定的参数运行此函数(例如用户展示其功能)。就像
在一个可执行的 TCL 脚本中,我定义了一个变量,我想在另一个可执行的 TCL 脚本中导入该变量。在 Python 中,可以通过在脚本底部使用以下习语来制作组合库和可执行文件: # Library i
这个问题在这里已经有了答案: What does if __name__ == "__main__": do? (45 个答案) 关闭 8 个月前。 我看过很多关于这个的文章: if __name_
我在两个分开的文件中写了两个函数,假设是文件A.lisp 和B.lisp,这两个文件都有一些用于测试的主要程序代码,A.lisp 会调用B.lisp 中的函数。这意味着直接在 A.lisp 中使用 l
如果我有以下代码: def f(): print 'ok!' import sys sys.exit() if __name__=='__main__': import
这个问题在这里已经有了答案: What does if __name__ == "__main__": do? (45 个答案) 关闭 8 年前。 我试图理解我发现的一些读取命令行参数的代码(附在下
所以,这是我的情况。 我在 Eclipse 中使用 PyDev,在 Windows 中使用 Python 解释器版本 2.7.2。 我正在使用内置的多处理库来尝试 fork 出一堆进程来并行化一个计算
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: What does do? 我用 Python 编写脚本已经有一段时间了,我会根据需要学习更多的 Pyth
假设我有一个包含以下内容的模块: def main(): pass if __name__ == "__main__": main() 我想为下半部分编写一个单元测试(我想实现 100
在具有 __main__.py 的项目中, 而不是 # __main__.py # def main... if __name__ == "__main__": main() ...可以这样做
我有一个 unittest.TestCase 有一个非常重的设置类 如果代码作为 main 启动,我想使用模拟运行它,如果它通过导入运行,则运行完整的数据检查,如下所示: import unittes
我有一些要求,至少需要达到 80% 的线路覆盖率。我有一些文件,其中大部分代码位于 if __name__ == '__main__': 下无需测试。 我如何指示 SonarQube 从测试覆盖范围中
这个问题已经有答案了: What does if __name__ == "__main__": do? (46 个回答) 已关闭 9 年前。 另外,为什么我们要使用下划线?毕竟我将main方法定义为
我有这个文件(它没有做任何有用的工作,仅供学习): import multiprocessing,sys def parent(numproc=2): print ('at start')
我刚刚开始使用 setuptools 进行打包,似乎推荐的安装 python 脚本和一个模块的方法是指定一个调用函数名称的脚本名称,如下所示: setup( # ... entry_p
目标是有两种简单的方法来获取一些代码,比如 func.R,包含一个函数。调用 R CMD BATCH func.R 初始化函数并计算 is。在 session 中,发出 source("func.R"
我正在涉足 clojure,但在尝试确定这个常见的 python 习语的 clojure(和/或 Lisp)等价物时遇到了一些麻烦。 习语是在一个python模块的底部通常有一点测试代码,然后是运行代
有没有办法确定当前文件是否是在 Perl 源代码中执行的文件?在 Python 中,我们使用以下结构来做到这一点: if __name__ == '__main__': # This file
我是一名优秀的程序员,十分优秀!