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):
python foo/bar.py
How can I create a run confirguration in pycharm that runs my code using the first invokation above?
In 2018.1 it is finally possible to specify the module name instead of the script path in the UI. There is a dropdown for changing it, to the left of the input field.
https://i.stack.imgur.com/yLDiy.png
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: python_lib_directory/runpy.py
Script parameters: my_module.a.b module_arguments
Interpreter options: (leave blank, no -m required)
Run
but not for Debug
. You answer can work for both Run
and Debug
.
./usr/lib/python*/runpy.py
C:\Python36\Scripts\pylivetrader.exe run algo2.py
According to man python
, the -m
option
-m module-name 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 Run bar
.
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:
https://i.stack.imgur.com/fR2qd.png
IntelliJ IDEA / PyCharm 2017
Field "Script" is optional in the recent versions of JetBrains IDEs. Specifying -m foo.bar
in "Script parameters" is enough:
https://i.stack.imgur.com/oxavt.png
/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py
with lots of options, including --file XXX
which it sees as --file -m
using your solution.
In PyCharm 2016 specifying -m
without a script path doesn't work, as they use a wrapper script that doesn't accept the -m
argument.
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...
Success story sharing