Как запустить Python3 программу, которая использует лямбду из Bash - PullRequest
0 голосов
/ 15 января 2020

В программе Python у меня есть, среди прочего, класс, который позволяет раскрашивать текст:

class style():
    BLACK = lambda x: '\033[30m' + str(x)
    RED = lambda x: '\033[31m' + str(x)
    GREEN = lambda x: '\033[32m' + str(x)
    YELLOW = lambda x: '\033[33m' + str(x)
    BLUE = lambda x: '\033[34m' + str(x)
    MAGENTA = lambda x: '\033[35m' + str(x)
    CYAN = lambda x: '\033[36m' + str(x)
    WHITE = lambda x: '\033[37m' + str(x)
    UNDERLINE = lambda x: '\033[4m' + str(x)
    RESET = lambda x: '\033[0m' + str(x)

Пример вызова:

print(style.UNDERLINE('ATTACHMENT TEST') + style.RESET(''))

Теперь я хочу запустить эту программу Python3 от Bash. Я пробовал:

  • в Bash скрипт:
#!/bin/bash

python Annotation\ test/Annotation_test.py
#or 
./Annotation\ test/Annotation_test.py
  • в Python3 программа:
#!/usr/bin/env python

Но когда я запускаю свой скрипт, Bash говорит, что:

print(style.UNDERLINE('ATTACHMENT TEST') + style.RESET(''))
TypeError: unbound method <lambda>() must be called with style instance as first argument (got str instance instead)

Хотя эта программа в PyCharm работает совершенно нормально. Почему Bash имеет проблемы с этим? И как я могу это исправить? Спасибо за любую помощь

1 Ответ

3 голосов
/ 15 января 2020

Ваш bash, скорее всего, использует python 2 по умолчанию, а консоль pycharm использует python 3, поэтому вы видите только ошибку в bash.

Попробуйте установить python 3 по умолчанию python для вашей системы. Вы также можете запустить этот файл только с python 3, выполнив следующее:

python3  Annotation\ test/Annotation_test.py

или

py -3 Annotation\ test/Annotation_test.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...