LINUX.ORG.RU

Gentoo / Python / Pygments

 ,


1

1

У меня что-то с питоном - при попытке запуска ebuild/emerge/pip выползает usage модуля pygments.

$ >>> emerge -L
Pygments version 2.1.3, (c) 2006-2015 by Georg Brandl.

Lexers:
~~~~~~~

Запустил без параметров, жмакнул ctrl-c:

$ >>> pip3
^CTraceback (most recent call last):
  File "/usr/bin/pip3", line 11, in <module>
    sys.exit(main())
  File "/usr/lib64/python3.5/site-packages/pygments/cmdline.py", line 504, in main
    return main_inner(popts, args, usage)
  File "/usr/lib64/python3.5/site-packages/pygments/cmdline.py", line 374, in main_inner
    code = sys.stdin.buffer.read()
KeyboardInterrupt

$ >>> emerge -1 portage
Usage: /usr/bin/emerge [-l <lexer> | -g] [-F <filter>[:<options>]] [-f <formatter>]
          [-O <options>] [-P <option=value>] [-s] [-v] [-o <outfile>] [<infile>]

       /usr/bin/emerge -S <style> -f <formatter> [-a <arg>] [-O <options>] [-P <option=value>]
       /usr/bin/emerge -L [<which> ...]
       /usr/bin/emerge -N <filename>
       /usr/bin/emerge -H <type> <name>
       /usr/bin/emerge -h | -V

Highlight the input file and write the result to <outfile>.

If no input file is given, use stdin, if -o is not given, use stdout.

If -s is passed, lexing will be done in "streaming" mode, reading and
highlighting one line at a time.  This will only work properly with
...

. ... ещё куча текста из help

$ >>> cat /usr/bin/emerge
#!/usr/bin/python3.5

# -*- coding: utf-8 -*-
import re
import sys

from pygments.cmdline import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Последнее законно? Зачем импортировать Main из стороннего модуля? И всё такое. Я, конечно, не то чтобы спец по portage, но выглядит это странно.

Помогите, пожалуйста. Гугл не помог.


Ответ на: комментарий от pawnhearts

Да вот вроде как ничего такого.. недавно обновил portage, но там минорная версия. Ещё ставил lua и пару библиотек, но они не относятся к питону. Может, приложить ещё что-нибудь? Идей нет особо.

alextk
() автор топика
Ответ на: комментарий от alextk

Ну попробуй посмотреть что вообще происходит - куда ведут эти команды, что они делают. pdb, strace, etc в руки.

А вообще делай бекапы/снепшоты перед обновлением чтоли )

pawnhearts ★★★★★
()
Ответ на: комментарий от alextk

sys.exit(main()) вполне нормальная конструкция сама по себе. Делает кодом возврата, то что вернет ф-я main(). ф-я main() тоже обычная практика. Ты можешь куда-нить всунуть в этот код pdb.set_trace() и рыться дальше, но надо знать питон немного.

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

Дык я понимаю это всё. Но разве это нормально? emerge и должен содержать эти три строки? Тут всё и без трейса понятно, вроде как.

alextk
() автор топика
Ответ на: комментарий от alextk

Вообще стоп, почему у тебя в /usr/bin/emerge вызывается main() из pygments? Что за бред?

Ты можешь откатить это обновление?

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

Во-о-от! Я о том и говорил в конце поста.

Как откатить и какое обновление?

Сейчас посмотрел - в pip3 то же самое:

$ >>> cat `which pip3`
#!/usr/bin/python3.5

# -*- coding: utf-8 -*-
import re
import sys

from pygments.cmdline import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

И вот ещё что:

$ >>> ls -l `which pip3 emerge ebuild`
lrwxrwxrwx 1 root root 31 окт 14 23:07 /usr/bin/ebuild -> ../lib/python-exec/python-exec2
lrwxrwxrwx 1 root root 31 окт 14 23:07 /usr/bin/emerge -> ../lib/python-exec/python-exec2
lrwxrwxrwx 1 root root 31 окт  6 02:28 /usr/bin/pip3 -> ../lib/python-exec/python-exec2

alextk
() автор топика
Ответ на: комментарий от arrecck

у меня были такие проблемы, когда я вручную удалил python-exec

arrecck ★★★
()
Ответ на: комментарий от arrecck

ohwow, спасибо большое! Думал о запуске emerge 2.7 питоном, но не придумал способа. Теперь всё работает.

alextk
() автор топика
Ответ на: комментарий от anonymous

У меня ни разу не возникала необходимость переустанавливать её, это же не винда (да и мс вроде починил эту проблему примерно в 10). По-моему, несколько мимо.

anonymous
()
Ответ на: комментарий от anonymous

ох чёрт, s/винда/венда/g как можно было такую ошибку допустить

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.