Передача аргументов в сценарий точки входа python с использованием argparser - PullRequest
0 голосов
/ 02 мая 2020

Я хочу передать введенные пользователем аргументы из командной строки в точку входа для сценария python. До сих пор я пытался использовать argparse для передачи аргументов из командной строки в скрипт test.py. Когда я пытаюсь передать аргументы, они не распознаются, и я получаю следующую ошибку.

load_entry_point ('thesaurus == 0.1', 'console_scripts', 'thesaurus') ()
TypeError: find_synonym () отсутствует 1 обязательный позиционный аргумент: 'argv'

Я посмотрел другие примеры здесь, но не смог заставить работать ни одно из решений.

def main(argv):
    if argv is None:
        argv = sys.argv

    parser = argparse.ArgumentParser(description='Enter string')
    parser.add_argument('string', type=str, help='Enter word or words', nargs='*')
    args = parser.parse_args(argv[1:])
    print(args)

if __name__ == "__main__":
    sys.exit(main(sys.argv))

Моя точка входа в скрипт setup.py выглядит следующим образом

setup(entry_points={'console_scripts': ['test=test_folder.main:main']})

То, что я ожидаю получить, похоже на то, когда я запускаю python main.py main foo. Который успешно распечатает привет, когда он передается функции.

1 Ответ

0 голосов
/ 07 мая 2020

Так что теперь это работает, когда я удаляю аргументы из функции.

 def main():          
        parser = argparse.ArgumentParser(description='Enter string')
        parser.add_argument('string', type=str, help='Enter word or words', nargs='*')
        args = parser.parse_args()
        print(args.string)

if __name__ == "__main__":
    main()

Я считаю, что это может работать с sys.arv, использованным в первом примере, так как моя настоящая проблема заключалась в том, что когда Я повторно загрузил этот скрипт из GitHub, используя.

pip install git + URL

Сценарий не обновлялся, поэтому ошибка не исчезла. Требуется удалить все файлы, связанные с репозиторий GitHub и переустановите его с помощью той же команды pip.

...