Ошибка плагина gedit - не найден загрузчик плагина 'python3'

Я попытался добавить некоторые плагины в gedit 3.10.4 на ubuntu 14.04LTS, и при попытке активировать эти плагины в gedit произошли некоторые ошибки:

(gedit:20686): libpeas-WARNING **: Ошибка при инициализации загрузчика плагинов Python: сбой при инициализации PyGObject ImportError: не удалось импортировать gobject (ошибка была: ImportError("Нет модуля с именем" gi "",))

(gedit:20686): libpeas-WARNING **: Пожалуйста, проверьте установку всех пакетов, связанных с Python, необходимых для libpeas, и попробуйте снова

(gedit:20686): libpeas-WARNING **: загрузчик 'python3' не является допустимым экземпляром PeasPluginLoader

(gedit:20686): libpeas-WARNING **: Не удалось найти загрузчик "python3" для плагина "скобка-завершение"

И я вижу, на GED

загрузчик плагина 'python3' не найден

У кого-нибудь есть идея, откуда может возникнуть проблема?

3 ответа

У меня была та же самая ошибка с другим плагином ( reST). Проблема, из-за которой возникла ошибка, заключалась в том, что я запускал ее из командной строки, когда была активна виртуальная среда. По этой причине Python3 не использовал (и не находил) системные библиотеки.

Решение: я обычно запускал gedit из GUI (или после деактивации virtualenv в Терминале), и редактор и плагин просто загрузились нормально. Дважды проверьте, если у вас есть аналогичная причина.

В противном случае вам, вероятно, действительно нужно проверить, что говорит сообщение об ошибке: установлены ли все "связанные пакеты, требуемые libpeas". Смотрите подробности пакета libpeas-1.0-0 для Trusty.

Чтобы добавить ответ @Railslide:

  1. В вашем /usr/lib/gedit/plugin поиск файла вашего плагина (например, bracketcompletion.plugin) и изменить Loader=python3 в Loader=python

  2. Если это все еще возвращает ошибку - вероятно, потому что это не совпадает python3 синтаксис: используйте команду 2to3 следующее:

    cd python_directory/
    sudo 2to3 -f all -w *
    

например для gedit-latex-plugin...

cd /usr/lib/gedit/plugins/
sudo sed -i 's/python/python3/g' latex.plugin # only if you haven't already replaced python->python3
cd latex/
sudo 2to3 -f all -w *

Затем это исправляет плагин, заменяя python2.x код с python3 код

связанные с

Это ошибка gedit, см. https://bugs.launchpad.net/ubuntu/+source/gedit/+bug/859089

Как обходной путь, в вашем /usr/lib/gedit/plugin поиск файла вашего плагина (например, bracketcompletion.plugin) и изменить Loader=python3 в Loader=python

К сожалению, этот обходной путь не работает для всех плагинов.

Сегодня я столкнулся с той же проблемой, хотя и с плагином code-comment. В моем случае проблема обнаруживалась только при запуске gedit из командной строки, аналогично @Peterino (хотя виртуальная среда фактически не была явно настроена). В остальном все было хорошо.

Причина, по которой это произошло, похоже, связана с тем, что я настроил $PATH в .bashrc таким образом, что python3 соответствует местной установке анаконды/миниконды. Нежелательный побочный эффект заключается в том, что при запуске из терминала gedit затем фактически выбирает локальную установку Miniconda вместо /usr/bin/python3.X, (Проверяется путем временного перемещения папки miniconda в другое место или входа в систему как другой пользователь).

Возможные исправления

(Хотя я все еще не полностью удовлетворен ни одним из них).

Помещение этого в.bashrc работает:

export CONDAPATH=$HOME/miniconda3/bin
export PATH="$CONDAPATH:$PATH"
# ^ put these two lines instead of the original miniconda export.

# __ : naming convention for private functions
__geditfix() {
    export PATH=$(echo $PATH | sed -E "s|:$CONDAPATH\|$CONDAPATH:||g"); # remove conda from the PATH environment variable, using RegEx
    gedit "$@"; # call gedit, giving it all arguments
    export PATH="$CONDAPATH:$PATH"; # add conda to the PATH environment variable
} # Using a function rather than an alias, so that the filename is given to gedit, as it should and not to setconda().

alias gedit='__geditfix' # So that we can run our fix simply via: gedit <arguments>.

Это ^ создает псевдоним для gedit, используя функцию, которая на самом деле

  • 1) удаляет ~/miniconda3/bin от $PATH,
  • 2) работает гедит (/usr/bin/gedit), приводя все аргументы,
  • 3) откладывает ~/miniconda3/bin в нашем $PATH,

С этими несколькими строчками в .bashrcможно просто позвонить gedit <arguments>

  • плагины работают, так как Gedit будет выбирать python от /usr/bin/,
  • python, jupyter-notebook, condaи тому подобное из Miniconda все еще можно получить прямой доступ без проблем

Кстати, это помогло: /questions/3962110/podstanovka-peremennoj-sredyi-v-sed/3962133#3962133 (подстановка переменных среды в sed)

Альтернативное решение: установите это v:

conda install -c conda-forge pygobject

Как можно догадаться по выводам терминала, этого не хватало при использовании установки miniconda python3.

Другие вопросы по тегам