Beim Lesen der Veröffentlichungsankündigung von PyCharm 2017.3 stellte ich amüsiert fest, dass PyCharm 2017.3 es jetzt unterstützt Python-Module auszuführen. Tatsächlich ging dies in PyCharm schon immer, wenn man verstanden hatte wie PyCharm die Parameter mit denen es Python aufruft zusammensetzt.

Enthält ein Modul in der aktuellen Pythonumgebung ein Paket __main__.py, so kann man dieses durch den Aufruf python -m <modulename> direkt ausführen. Ein beliebtes Bespiel dafür ist der in der Standardbibliothek enthaltene einfache HTTP-Server, der mit python -m http.server <port> ausgeführt werden kann.

PyCharm 2017.3 erlaubt einem jetzt über ein Dropdown auszuwählen ob man eine Datei oder ein Modul ausführen will. Tatsächlich funktioniert dies aber auch in älteren Versionen. Hierzu muss lediglich als letzte Option für den Pythoninterpreter – nicht das Skript – -m angegeben werden. PyCharm ruft nämlich am Ende immer <ausgewählter Pythoninterpreter> <Interpreteroptionen> <Skriptname> <Skriptparameter> auf. Enden die Interpreteroptionen mit -m interpretiert Python den „Skriptnamen“ als Modulnamen. In älteren Versionen von PyCharm muss man für obiges Beispiel also lediglich als Skript http.server und bei den Interpreteroptionen -m eintragen.