Autojump: Модуль не найден ошибка с новой версией пакета

Созданный на 22 нояб. 2019  ·  22Комментарии  ·  Источник: wting/autojump

Я обновил автопереход до версии 22.5.3-3, и при использовании cd или j я получаю эту ошибку:

Traceback (most recent call last):                                                                 
  File "/usr/bin/autojump", line 39, in <module>
    from autojump_argparse import ArgumentParser
ModuleNotFoundError: No module named 'autojump_argparse'

Я понизил его до версии 22.5.3-1, и он работает.
Я использую Arch linux.

Самый полезный комментарий

Я сталкиваюсь с этой проблемой, когда обновляю python3.8 до python3.9, поэтому я просто копирую некоторый пакет autojump из python3.8 на python3.9, и я решил эту проблему.

cp /usr/lib/python3.8/site-packages/autojump* /usr/lib/python3.9/site-packages/

Все 22 Комментарий

то же самое здесь на Манджаро :(
ОС: Manjaro 18.1.3 Juhraya
Ядро: x86_64 Linux 5.3.11-1-MANJARO

Нашел то же самое на Манджаро:

Linux version 5.3.11-1-MANJARO
DISTRIB_ID=ManjaroLinux
DISTRIB_RELEASE=18.1.3
DISTRIB_CODENAME=Juhraya
DISTRIB_DESCRIPTION="Manjaro Linux"

Исправлено поведение путем удаления autojump с помощью yay и переустановки с чистой сборкой с использованием того же.

Это разрешило поведение после повторного получения моего файла конфигурации для zsh .

Также здесь Manjaro 18.1.3. Удаление и повторная установка пакета autojump не помогли мне. Не удалось переустановить

==> Error: Could not find all required packages:
    python>=3.8 (Wanted by: autojump)

Моя версия python действительно 3.7.4.

Пакет autojump-git похоже, сейчас работает.

Я поддерживаю пакет autojump для Arch Linux через AUR.

  • 22.5.3-5 включает версию Python-зависимости и решение, предложенное hefteg в FS # 60929
  • 22.5.3-1 не имеет этого перехода на site-packages

Я хочу знать, связана ли причина ошибки «модуль не найден» с реализацией исправления hefteg.

Я использую zsh в Arch и не испытываю этого, поэтому @ tmarti2 -

  1. Вы собирали с помощью makepkg или какого-либо помощника AUR (не используйте помощник AUR)?
  2. Есть ли у вас что-нибудь в вашем ~/.zshrc или в каком-либо файле zsh, ссылающееся на что-либо или источник чего-либо для автоперехода?

Пользователи Manjaro: знайте, что Manjaro! = Arch ... на основе комментария

Вы можете изменить depends= и _python= в PKGBUILD на python3.7 и перестроить, и это должно сработать для вас.

да, я под Манджаро, плохо.
Я использую Yay, и я почти уверен, что у меня есть строка, в которой упоминается автопереход в .zshrc, но я не могу вспомнить, что именно.
Завтра попробую.

Я предполагаю, что yay - помощник AUR. Они создают больше проблем, чем решают. Измените PKGBUILD, как я уже упоминал, и создайте с помощью makepkg и я думаю, у вас все будет хорошо ... возможно, закройте эту проблему, поскольку она не связана с восходящим потоком.

Также здесь Manjaro 18.1.3. Удаление и повторная установка пакета autojump не помогли мне. Не удалось переустановить

==> Error: Could not find all required packages:
    python>=3.8 (Wanted by: autojump)

Моя версия python действительно 3.7.4.

Пакет autojump-git похоже, сейчас работает.

Autojump-git теперь не работает и на Manjaro. НЕ обновляйте и не устанавливайте.

@pwoehrer -

Пользователи Manjaro: знайте, что Manjaro! = Arch ... на основе комментария

Установка AUR pkg просто неверна. Необходимые модули были установлены в папку usr / lib / site-packages вне ../lib/python3.8/site-packages.

@noelar - правильное место для них - /usr/lib/python3.8/site-packages/ . См .: https://bugs.archlinux.org/task/60929

Не стесняйтесь поправлять меня, если я ошибаюсь.

Graysky2 прав: место для установки библиотек действительно находится в каталоге site-packages. Но...

Автопереход как таковой требует только python> = 2.6. Есть ли веская причина для принудительного> = 3.8?

Если нет, я бы посоветовал получить правильную версию системы на Python, выполнив что-то вроде этого:

depends=('python>=2.6`)
_python=python${/usr/bin/env python -V | grep -Po '\d+\.\d+'}

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

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

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

Мне нравится эта идея, но если бы я, это сработало бы, только если бы машина сборки имела ту же версию python, что и клиентская машина. Другими словами, можно построить на машине с 3.8 (Arch), но затем установить на текущий Manjaro (3.7). Предполагая, что нет различий 3,7 и 3,8, у него просто будет дополнительный каталог ....

Кто-нибудь знает наверняка, есть ли на самом деле различия, т.е. будет ли автопереход, построенный против python3.8, работать в системе с python3.7?

Приемлема ли версия /usr/lib/python/site-packages/ версий или это версия по той причине, о которой я спрашиваю выше?

Я ни в коем случае не эксперт по питону, поэтому, возможно, я не понимаю точную проблему.

Если посмотреть на autojump, то это чистый питон (ну и некоторые разновидности оболочки, но не в этом суть). Операторы компиляции в PKGBUILD создают промежуточный байтовый код (* .pyc) для библиотек (насколько я знаю, они зависят от версии, но все равно отбрасываются во время выполнения, если версии не совпадают). Обычно байт-код создается заранее, чтобы пользователи, не имеющие прав на запись, также могли воспользоваться ускорением.
Учитывая, что для установки в любом случае необходимы права на запись, мне было бы разумно сгенерировать байтовый код для библиотек во время установки, а не во время сборки.

Исходный код автоперехода на python написан таким образом, что ему не важно, какая версия интерпретатора python доступна, если она> = 2.6.

Но опять же: не эксперт, просто нравится автопрыжок и увлекается питоном.

Манджаро тоже здесь,

как сказал @ graysky2 ,

1. wget https://aur.archlinux.org/cgit/aur.git/snapshot/autojump.tar.gz
2. tar -xzvf autojump.tar.gz
3. cd autojump && vim PKGBUILD

# depends=('python>=3.7')
# _python=python3.7
4. replace all the 3.8 to 3.7
5. makepkg
6. sudo pacman -U autojump-22.5.3-5-any.pkg.tar.xz

Я думаю, это было бы нормально.

@pwoehrer - Проблема в том, что нужно пересобрать его для выпуска основной версии Python (то есть от 3.6 до 3.7 или от 3.7 до 3.8). Если бы это было в официальных репозиториях, сопровождающий просто ударил бы pkgver и изменил бы переменную _python но, поскольку это AUR, мне нужно принудительно использовать версию python3 dep.

Если есть более разумный способ поддерживать последовательность, поделитесь им со мной.

Например, если вы создадите автопереход против python v3.7.x, вы получите:

% pacman -Ql autojump                                                                                       
...
autojump /usr/lib/python3/site-packages/__pycache__/autojump_argparse.cpython-37.opt-1.pyc
autojump /usr/lib/python3/site-packages/__pycache__/autojump_argparse.cpython-37.pyc
autojump /usr/lib/python3/site-packages/__pycache__/autojump_data.cpython-37.opt-1.pyc
autojump /usr/lib/python3/site-packages/__pycache__/autojump_data.cpython-37.pyc
autojump /usr/lib/python3/site-packages/__pycache__/autojump_match.cpython-37.opt-1.pyc
autojump /usr/lib/python3/site-packages/__pycache__/autojump_match.cpython-37.pyc
autojump /usr/lib/python3/site-packages/__pycache__/autojump_utils.cpython-37.opt-1.pyc
autojump /usr/lib/python3/site-packages/__pycache__/autojump_utils.cpython-37.pyc
...

Боюсь, что пока в пакет включен скомпилированный * .pyc, это невозможно сделать. Но, как я уже сказал, в действительности нет необходимости включать их в пакет. Было бы лучше сгенерировать их во время установки, поскольку они будут использовать версию системы на Python и не зависят от платформы. * .pc предназначены для создания при первом запуске библиотеки.

Кроме того, они не являются строго необходимыми для работы автоперехода, они нужны только для того, чтобы немного ускорить работу систем, где у пользователя нет разрешения на запись в каталог пакетов сайта.

Итак: Нет, я не думаю, что есть лучший способ, если они * .pyc должны быть включены в пакет. :-(

Проблема с тем, что нельзя делать это таким образом, изложена в FS # 60929.

Если мы реализуем автопереход на скомпилированном языке, нам не нужно беспокоиться о подобных проблемах. Я переписал его на Go и давно пользуюсь им, может быть, вы захотите попробовать. (https://github.com/suzaku/shonenjump)

Я сталкиваюсь с этой проблемой, когда обновляю python3.8 до python3.9, поэтому я просто копирую некоторый пакет autojump из python3.8 на python3.9, и я решил эту проблему.

cp /usr/lib/python3.8/site-packages/autojump* /usr/lib/python3.9/site-packages/

Я сталкиваюсь с этой проблемой, когда обновляю python3.8 до python3.9, поэтому я просто копирую некоторый пакет autojump из python3.8 на python3.9, и я решил эту проблему.

cp /usr/lib/python3.8/site-packages/autojump* /usr/lib/python3.9/site-packages/

Вы можете попробовать мой инструмент, его легко установить с помощью brew .

@heppen - вам нужно перестроить, как любой скрипт python, для основной версии bump.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги