Как я могу заставить python обнаруживать отсутствующие пакеты или приложения

Во-первых, я бы проверил все места, откуда tcsh выполняет команды при запуске.

На справочной странице сказано следующее (Я выделил жирным шрифтом расположение файлов):

A login shell begins by executing commands from the system files /etc/csh.cshrc and /etc/csh.login. It then executes commands from files in the user's home directory: first ~/.tcshrc (+) or, if ~/.tcshrc is not found, ~/.cshrc, then ~/.history (or the value of the histfile shell variable), then ~/.login, and finally ~/.cshdirs (or the value of the dirsfile shell variable) (+). The shell may read /etc/csh.login before instead of after /etc/csh.cshrc, and ~/.login before instead of after ~/.tcshrc or ~/.cshrc and ~/.history, if so compiled; see the version shell variable. (+)

Если это вас ни к чему не приведет, я бы попробовал следующие две вещи:

  • Войдите в систему как пользователь-нарушитель и дайте ему зависнуть, переключитесь на другую консоль и установите флажок w-, который должен показать вам, что работает этот пользователь.
  • Ctrl+Zвместо Ctrl+C-, что должно приостанавливать запущенный процесс, а не прерывать его. Затем jobs, чтобы увидеть, что было приостановлено.

РЕДАКТИРОВАТЬ :Как указал JdeBP в комментариях, вы также можете установить параметры -xи -Vна tcsh в su -, хотя я думаю, что вы могли бы найти оскорбительную вещь с помощью -X. Примерно так:

su - troublesome_user -- -X
  • -x повторяет все команды перед выполнением
  • -v ввод команды повторяется после подстановки истории
  • -X То же, что и -x, но применяется даже до обработки.tcshrc
  • -V То же, что и -v, но применяется даже до обработки.tcshrc

0
08.02.2019, 05:27
2 ответа

Для пакетов проще всего просто попытаться установить их, но сработает что-то вроде синтаксического анализа выводаrpm -qa(или эквивалентного для других схем упаковки ). Если это модуль Python, у вас может быть оператор try-except, в котором предложение exceptможет установить пакет, содержащий модуль, и повторить попытку импорта.

Это был вопрос, или мы все запутались?

0
28.01.2020, 02:30

Для модулей Python я использую такой код:

# Make sure we have all our necessary modules
allOK=True
for m in ['requests','json','yaml','argparse','re','traceback']:
    try:
        globals()[m]=importlib.import_module(m)
    except Exception as e:
        print 'Python module "%s" is required, please use "yum install python-%s" to install it.' % (m,m)
        allOK=False

if not allOK:
    print 'One or more modules missing, exiting.'
    exit(1)
2
28.01.2020, 02:30

Теги

Похожие вопросы