My python entrypoint needs to be run as a module (not a script), as in:
python -m foo.bar
The following does not work (and is not supposed to):
How can I create a run confirguration in pycharm that runs my code using the first invokation above?
man python, the
Searches sys.path for the named module and runs the corresponding .py file as a script.
So most of the time you can just right-click on
bar.py in the Project tool window and select
If you really need to use the
-m option, then specify it as an Interpreter option, with the module name as the Script in the Edit Configurations dialog:
There is a workaround I use for my scripts, which do use relative imports.
python -m actually invokes a script called runpy.py which is part of a standard Python installation. These two invocations are equivalent:
python -m my_module.a.b module_arguments python python_lib_directory/runpy.py my_module.a.b module_arguments
Use the latter method to setup your Run/Debug Configuration:
Script parameters: my_module.a.b module_arguments
Interpreter options: (leave blank, no -m required)
In PyCharm 2016 specifying
-m without a script path doesn’t work, as they use a wrapper script that doesn’t accept the
Here’s my solution, which works for run & debug configurations: https://github.com/amnong/misc/tree/master/pycharm_runner
Edit: I just read J. R. Petrus’s comment, and my solution is very similar. BTW I also tried to support proper entry points using
pkg_resources, but for some reason
pkg_resources.load_entry_point() could not find my project’s distribution…