2016-09-21 3 views
0

У меня возникли проблемы с получением CLI Python 3.5 для запуска команд с помощью переключателя -c.Использование локальных модулей Python из python -c '...'

Если я попробую python3 -c "print(5 + 9)" в оболочке, выход будет 14, как ожидалось.

Однако, у меня есть файл в текущем рабочем каталоге под названием gcd.py который выглядит следующим образом:

def gcd(m, n): 
    return m if n == 0 else gcd(n, m % n) 

Если я бегу python3 -m gcd -c "print(gcd(48, 18))" оболочка просто создает новую командную строку без вывода чего-либо.

Если изменить файл:

print('test') 

def gcd(m, n): 
    return m if n == 0 else gcd(n, m % n) 

то оболочка будет выводить test, поэтому файл загружается. Кто-нибудь знает, что я делаю неправильно? Благодарю.

+0

В этом режиме нет ничего конкретного CLI - он часто используется для встраивания кода Python в сценарии bash, не ожидая, что эти скрипты будут использоваться в интерактивном режиме. –

ответ

4

Вы не можете использовать -m и -c вместе; либо один, либо другой контроль выполнения. Указав их, оба Python игнорируют их.

Используйте import заявление в -c вместо:

python3 -c "from gcd import gcd; print(gcd(48, 18))" 

Обратите внимание, что -m рассматривает модуль как сценарий, он не является «импорт этого модуля первый» переключатель для -c.

Смежные вопросы