Подтвердить что ты не робот

Создайте конфигурацию PyCharm, которая запускает модуль a la "python -m foo"

Моя точка входа python должна запускаться как модуль (а не script), как в:

python -m foo.bar

Не работает (и не предполагается) следующее:

python foo/bar.py

Как я могу создать confirguration для запуска в pycharm, который запускает мой код, используя первое invokation выше?

4b9b3361

Ответ 1

В соответствии с man python параметр -m

-m имя-модуля
       Ищет sys.path для именованного модуля и запускает соответствующий .py файл как script.

Поэтому большую часть времени вы можете просто щелкнуть правой кнопкой мыши по bar.py в окне инструмента проекта и выбрать Run bar.

Если вам действительно нужно использовать параметр -m, укажите его как опцию Интерпретатор с именем модуля как Script в диалоговом окне "Редактирование конфигураций":

enter image description here

Ответ 2

Существует обходной путь, который я использую для своих скриптов, которые используют относительный импорт.

python -m фактически вызывает script, называемый runpy.py, который является частью стандартной установки Python. Эти два вызова эквивалентны:

python -m my_module.a.b module_arguments
python python_lib_directory/runpy.py my_module.a.b module_arguments

Используйте последний метод для настройки конфигурации запуска/отладки:

Script: python_lib_directory/runpy.py

Script параметры: my_module.a.b module_arguments

Параметры интерпретатора: (оставьте поле пустым, не требуется -m)

Ответ 3

В PyCharm 2016 указание -m без пути script не работает, поскольку они используют оболочку script, которая не принимает аргумент -m.

Здесь мое решение, которое работает для запуска и отладки конфигураций: https://github.com/amnong/misc/tree/master/pycharm_runner

Изменить: я просто прочитал комментарий Дж. Р. Петруса, и мое решение очень похоже. BTW Я также пытался поддерживать правильные точки входа с помощью pkg_resources, но по какой-то причине pkg_resources.load_entry_point() не смог найти распределение моего проекта...

Ответ 4

IntelliJ IDEA/PyCharm 2017

Поле "Script" является необязательным в последних версиях IDE JetBrains. Указание -m foo.bar в параметрах Script достаточно:

введите описание изображения здесь