-m: run library module as a script (terminates option list)
将模块当做脚本去启动有什么用?
python xxx.py
python -m xxx
不同的加载py文件的方式,主要是影响sys.path这个属性
举例:
test.py
import sys
print(sys.path[0])
执行python xxx.py脚本运行模式
python myproj/test.py
return:
'/home/code/myproj'#绝对路径
执行python -m xxx模块运行模式
cd code
python -m myproj.test
return:
''#空路径(相对路径)
由于sys.path[0]的不同,也解释了为什么from … import xxx这类相对路径模块导入在python xxx.py启动下报错:
ValueError: attempted relative import beyond top-level package
对应于命令行命令:
cd trajnetplusplusbaselines
python -m trajnetbaselines.lstm.trainer --path synth_data
在pycharm中的设置为:
参考:https://intellij-support.jetbrains.com/hc/en-us/community/posts/360003879119-how-to-run-python-m-command-in-pycharm-