根据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__')
我不明白__path__
属性与此有什么关系。
答案 0 :(得分:4)
当python尝试查找不存在的包/模块时,会出现错误。作为user2357112 mentions,data.generate_dummies.py
被视为完全指定的模块路径(不存在),并尝试导入子模块py
(也不存在)。
如果您正在使用.py
标记,则在没有-m
的情况下调用您的文件,如下所示:
python -m data.generate_dummies