创建运行模块的PyCharm配置"python -m foo"

Ale*_*int 46 python pycharm

我的python入口点需要作为模块(而不是脚本)运行,如:

python -m foo.bar
Run Code Online (Sandbox Code Playgroud)

以下不起作用(并且不应该):

python foo/bar.py
Run Code Online (Sandbox Code Playgroud)

如何使用上面的第一个调用在pycharm中创建运行我的代码的运行确认?

小智 41

我使用的解决方法是我的脚本,它使用相对导入.

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
Run Code Online (Sandbox Code Playgroud)

使用后一种方法设置运行/调试配置:

脚本: python_lib_directory/runpy.py

脚本参数: my_module.ab module_arguments

解释器选项:(留空,不需要-m)

  • 很棒的技巧,这也使你能够使用pycharm的分析选项! (2认同)
  • 在我的 Ubuntu 安装中,脚本位于:```./usr/lib/python*/runpy.py``` (2认同)

小智 35

在2018.1中,最终可以在UI中指定模块名称而不是脚本路径.在输入字段的左侧有一个用于更改它的下拉列表.

PyCharm运行配置

  • 这应该是公认的答案.@alexflint我建议你改变接受的答案. (3认同)

and*_*otn 31

根据man python,-m选项

-m module-name在
sys.path中搜索指定的模块,并将相应的.py文件作为脚本运行.

因此,大多数情况下,您只需bar.py在"项目"工具窗口中右键单击并选择即可Run bar.

如果确实需要使用该-m选项,请将其指定为Interpreter选项,并在Edit Configurations对话框中将模块名称作为Script:

在此输入图像描述

  • 这适用于运行模块,但不适用于调试它.如果我单击调试图标而不是运行图标,我会收到错误No module found. (5认同)
  • 这不起作用,因为我使用"来自__future__ import absolute_import"然后我做"来自.import foo". (3认同)

Ant*_*nko 6

IntelliJ IDEA/PyCharm 2017

字段"脚本"在最新版本的JetBrains IDE中是可选的.-m foo.bar在"脚本参数"中指定就足够了:

在此输入图像描述