python - "import safe"在 Python 中是什么意思?

标签 python permissions nose

我刚刚发现 nose 不会运行标记为可执行的测试的行为(如 a previous question 中所述)。我发现这令人惊讶,在我了解 nose 的行为之前,我浪费了一些时间试图找出为什么 nose 没有运行我的测试。

在 nosetests 的联机帮助页中,它描述了一个覆盖默认行为的选项:

--exe               Look for tests in python modules that are executable.
                    Normal behavior is to exclude executable modules,
                    since they may not be import-safe [NOSE_INCLUDE_EXE]

我的问题是:“导入安全”是什么意思?什么是非导入安全模块的示例?是否可以通过删除可执行位来使非导入安全模块成为导入安全模块,还是除此之外还有更多?

最佳答案

我不熟悉 nose,但我很确定“导入安全”的意思是导入模块只会定义东西,而不是开始运行东西。

想法是,如果 .py 文件被设计为作为脚本执行,那么它的功能将在执行模块范围代码时启动。这可以防止使用 __name__ == '__main__' 技巧导入,但它可能不是。如果不是,导入它可能会执行与不带参数调用时作为脚本执行的相同操作,这在某些情况下可能很糟糕。

因此,您可以通过传递 --exe 标志明确地告诉 nose 没有这样的可执行脚本导入是危险的,或者您可以清除脚本的可执行权限。

关于python - "import safe"在 Python 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10330499/

相关文章:

Python 3.3 CSV.Writer 写入额外的空白行

java - 如何请求root权限

java - 尝试写入文件时 Tomcat 权限被拒绝

.net - 如何使用 CAS 拒绝 Assert?

python - 使用nosetest时cfg文件中的插件出错

python - 将其他 html 文档集成到 sphinx 文档中

python - 程序在 if while 使用循环之后结束,但它不应该结束

python - IDLE 中带有 numpy 的 AttributeError 但 Python Shell 中没有

python - 迭代扩展列表/嵌套 for 循环

macos - 如何在Mac上安装nose for python 3