Как запустить файл .py с его параметрами в консоли Python? - PullRequest
1 голос
/ 23 февраля 2020

Я пытаюсь запустить этот проект GitHub в python, но я мог запустить его только с помощью Terminal of Pycharm IDE.

Согласно руководству из репозитория GitHub, Я удалил знак $ с начала $ python train.py RGCN PPI и смог запустить его там. Что означает $ и как я могу запустить файл, подобный этому, в консоли Python (например, после знака >>>)?

1 Ответ

2 голосов
/ 23 февраля 2020

'$' не является частью синтаксиса Python, это визуальная подсказка в документации, представляющей командную строку.

Чтобы ответить на вопрос из заголовка этого поста Сначала я приведу некоторые инструкции по загрузке сценариев в консоль Python. Однако для вашего конкретного случая c вам это не нужно. Прокрутите вниз до части об отладке в PyCharm.

Есть два способа получить ваш скрипт в консоли. Один из них - просто загрузить его, используя правильную версию двух строк, которые я даю ниже, или вы можете загрузить его как модуль - даже если он не предназначен для этого.

В общем, для выполнения скрипт в оболочке Python на Python 2, который вы можете сделать

>>> execfile(r"<path to script here>")

на Python 3, он более многословен:

>>> exec(open(r"<path to script here>").read())

Эффект, который он имеет, такой Вы вырезали и вставили скрипт в консоль. Глобальная область видимости консоли получит все функции, классы и переменные, которые имеют самый левый отступ в файле. Также он может не запускать ваш блок if __name__ == '__main__':. Но вы можете взломать это.

Если вы хотите, чтобы переменная vars / classes / et c была помещена в другую область, отличную от глобальной области видимости вашей консоли, то есть два дополнительных параметра для вышеуказанных команд. Первый - это словарь для globals, а другой для locals. Вы можете обойтись только с помощью параметра globals - это просто обычный словарный объект, который вам нужен.

Если файл, который вы хотите загрузить, является модулем, вы можете импортировать его, как любой другой модуль, добавив свою домашнюю папку к пути поиска модуля Python и используя директиву import. Вы можете загрузить свой сценарий таким образом, даже если он не предназначен для использования в качестве модуля.

>>> import sys
>>> sys.path.append(r'/Users/todd/projects/mymodule_folder')
>>> import mymodule

Если вы вносите в него изменения и хотите перезагрузить его:

>>> import importlib
>>> importlib.reload(mymodule)

Загрузка вашего Скрипт как модуль позволяет избежать загрязнения глобальной области видимости вашей консоли. После загрузки просто добавьте имена функций и переменных вашего скрипта к имени модуля. Имя модуля будет именем файла без расширения .py.

Если сценарию требуются параметры командной строки, вы можете просто ввести значения для жесткого кода для них в сценарии и отключить строки кода, которые пытаются и получить значения из CLI. Если это сложно, рассмотрите возможность запуска его в IDE, как описано в следующем разделе.

Итак, вышеизложенное показывает, как вы можете запускать свои python сценарии в любой консоли Python REPL, которую вы хотите.

НО загрузка ваших скриптов в консоль Python может вообще не потребоваться для ваших целей. Вы хотели отладить некоторые сценарии (train.py, test.py) из этого проекта: https://github.com/microsoft/tf-gnn-samples).

Отладка сценария командной строки с PyCharm

Во многих случаях сценарий Python написан для запуска из оболочки ОС и получения параметров командной строки от пользователя. Скрипты такого типа могут быть загружены в консоль Python, но для большинства из них требуются незначительные хаки. Однако, если все, что вы хотите сделать, это отладить такой скрипт, вам не нужно гадить с консолью.

PyCharm поддерживает запуск их как есть (как это делает Eclipse и другие IDE), как и любой другой скрипт. Это всего лишь вопрос создания конфигурации запуска / отладки для проекта. Я только что установил PyCharm и попробовал записать детали. Легкая задача.

Просто откройте проект в PyCharm, и над панелью редактора на панели инструментов есть пункт меню для Редактировать конфигурации . Щелкните по нему, чтобы открыть диалоговое окно Run / Debug Configurations , и щелкните по +, чтобы добавить конфигурацию. Появится небольшое диалоговое окно с предопределенными шаблонами - выберите Python в качестве шаблона и примите.

Затем в главном диалоговом окне введите Путь сценария: с путем к train .py (или другой скрипт), затем установите флажок, [x] Эмулировать терминал в консоли вывода . Кроме того, вы можете добавить параметры командной строки в Параметры: текстовое поле (я вставил в текст: mymodel mytask просто для удовлетворения потребности сценария в двух параметрах). Нажмите OK внизу, чтобы принять конфигурацию и закрыть диалоговое окно.

Теперь вы должны увидеть зеленый значок ошибки на панели инструментов. Установите точку останова в блоке __main__ скрипта и щелкните значок отладки, чтобы начать отладку скрипта. Это должно сделать это!

Отладка Python Сценарий командной строки с PDB

PDB - отладчик Python можно запустить без IDE. Это еще один способ отладки любого сценария. Если для этого требуются параметры командной строки, предоставьте их из оболочки ОС при запуске отладчика:

$ pdb myscript.py mymodel mytask

Это действительно все, что нужно для запуска сеанса отладки. PDB требует некоторых знаний своих текстовых команд. После начала сеанса вы можете получить список кода рядом с текущей строкой выполнения, введя l. Введите help, чтобы увидеть список команд.

Чтобы выполнить шаг в одну строку выполнения, введите «s» для шага или введите «шаг». Чтобы установить точку останова, введите break <line-number> или установите точку останова в выражении. Ссылку на доступные команды можно найти здесь: https://docs.python.org/2/library/pdb.html. Есть также много версий чит-листов pdb, доступных в Интернете - просто зайдите в Google «patb cheatsheet» и выберите одну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...