我的python入口点需要作为模块(而不是脚本)运行,如:
python -m foo.bar
以下不起作用(并且不应该):
python foo/bar.py
如何使用上面的第一个调用在pycharm中创建运行我的代码的运行确认?
答案 0 :(得分:40)
我的脚本使用了一种解决方法,它使用相对导入。
python -m实际上调用了一个名为runpy.py的脚本,它是标准Python安装的一部分。这两个调用是等效的:
python -m my_module.a.b module_arguments
python python_lib_directory/runpy.py my_module.a.b module_arguments
使用后一种方法设置运行/调试配置:
脚本: python_lib_directory / runpy.py
脚本参数: my_module.a.b module_arguments
口译员选项:(留空,不需要-m)
答案 1 :(得分:30)
根据man python
,-m
选项
-m module-name
在sys.path中搜索指定的模块,并将相应的.py文件作为脚本运行。
因此,大多数情况下,您只需右键点击项目工具窗口中的bar.py
,然后选择Run bar
。
如果确实需要使用-m
选项,请将其指定为解释器选项,并在“编辑配置”对话框中将模块名称指定为脚本:
答案 2 :(得分:25)
答案 3 :(得分:6)
Field" Script"在最新版本的JetBrains IDE中是可选的。在"脚本参数"中指定-m foo.bar
够了:
答案 4 :(得分:4)
在PyCharm 2016中,在没有脚本路径的情况下指定-m
不起作用,因为它们使用的包装脚本不接受-m
参数。
这是我的解决方案,适用于run&调试配置:https://github.com/amnong/misc/tree/master/pycharm_runner
编辑:我刚读了J. R. Petrus的评论,我的解决方案非常相似。 BTW我也尝试使用pkg_resources
支持正确的入口点,但出于某种原因,pkg_resources.load_entry_point()
无法找到我项目的分发...