使用`python -m ...`时Main不执行

McL*_*nce 3 python program-entry-point module python-3.x

根据python doc,-m标记应执行以下操作:

在sys.path中搜索指定的模块,并作为__main__模块执行其内容 。

当我仅使用python命令运行脚本时,一切正常。由于我现在想从更高级别导入某些内容,因此我必须使用运行脚本python -m。但是,该__name__ == "__main__"语句似乎返回False并产生以下错误:

/home/<name>/anaconda3/bin/python: Error while finding module specification for 'data.generate_dummies.py' (AttributeError: module 'data.generate_dummies' has no attribute '__path__')
Run Code Online (Sandbox Code Playgroud)

我不明白该__path__属性与此有关。

cs9*_*s95 7

当python尝试查找不存在的包/模块时,会发生错误。正如user2357112所提到的data.generate_dummies.py被视为完全指定的模块路径(不存在),并尝试导入子模块py(也不存在)。

.py如果使用的是-m标志,则不带调用文件,如下所示:

python -m data.generate_dummies  
Run Code Online (Sandbox Code Playgroud)