Autojump: Modul tidak ditemukan kesalahan dengan versi paket baru

Dibuat pada 22 Nov 2019  ·  22Komentar  ·  Sumber: wting/autojump

Saya memutakhirkan autojump ke versi 22.5.3-3, dan saat menggunakan cd atau j, saya menerima kesalahan ini:

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

Saya menurunkannya ke versi 22.5.3-1, dan berhasil.
Saya menggunakan Archlinux.

Komentar yang paling membantu

Saya menemui masalah ini ketika saya memutakhirkan python3.8 ke python3.9, jadi saya hanya menyalin beberapa paket autojump di python3.8 ke python3.9, dan saya memecahkan masalah ini.

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

Semua 22 komentar

sama di manjaro :(
OS: Manjaro 18.1.3 Juhraya
Kernel: x86_64 Linux 5.3.11-1-MANJARO

Ditemukan hal yang sama di Manjaro:

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

Memperbaiki perilaku dengan menghapus autojump menggunakan yay dan menginstal ulang dengan build bersih menggunakan yang sama.

Ini menyelesaikan perilaku setelah mendapatkan kembali file konfigurasi saya untuk zsh .

Juga Manjaro 18.1.3 di sini. Menghapus dan menginstal ulang paket autojump tidak berhasil untuk saya. Gagal menginstal ulang dengan

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

Versi python saya memang 3.7.4.

Paket autojump-git tampaknya berfungsi untuk saat ini.

Saya memelihara paket autojump untuk Arch Linux melalui AUR.

  • 22.5.3-5 menyertakan ketergantungan python berversi dan menggabungkan solusi yang disarankan oleh hefteg di FS#60929
  • 22.5.3-1 tidak memiliki perpindahan ini ke paket situs

Saya ingin tahu apakah penyebab kesalahan modul tidak ditemukan adalah karena penerapan perbaikan hefteg.

Saya menggunakan zsh di Arch dan tidak mengalami ini, jadi @tmarti2 -

  1. Apakah Anda membangun dengan makepkg atau pembantu AUR (jangan gunakan pembantu AUR)?
  2. Apakah Anda memiliki sesuatu di ~/.zshrc atau referensi file zsh atau sumber apa pun untuk autojump?

Pengguna Manjaro: Ketahuilah bahwa Manjaro != Arch ... berdasarkan komentar @Syphdias , versi python Anda berada di belakang Arch sehingga Anda tidak dapat menginstal.

Anda dapat mengubah depends= dan _python= di PKGBUILD menjadi python3.7 dan membangun kembali dan itu akan bekerja untuk Anda.

ya saya di bawah Manjaro, saya buruk.
Saya menggunakan Yay, dan saya cukup yakin saya memiliki baris yang menyebutkan autojump di .zshrc, tapi saya tidak ingat apa.
Saya akan mencoba besok.

Saya berasumsi yay adalah pembantu AUR. Mereka menyebabkan lebih banyak masalah daripada yang mereka pecahkan. Ubah PKGBUILD seperti yang saya sebutkan dan buat dengan makepkg dan saya pikir Anda akan baik-baik saja ... mungkin tutup masalah ini karena tidak terkait dengan hulu.

Juga Manjaro 18.1.3 di sini. Menghapus dan menginstal ulang paket autojump tidak berhasil untuk saya. Gagal menginstal ulang dengan

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

Versi python saya memang 3.7.4.

Paket autojump-git tampaknya berfungsi untuk saat ini.

Autojump-git sekarang rusak di Manjaro juga. JANGAN meng-upgrade atau menginstal.

@pwoehrer -

Pengguna Manjaro: Ketahuilah bahwa Manjaro != Arch ... berdasarkan komentar @Syphdias , versi python Anda berada di belakang Arch sehingga Anda tidak dapat menginstal. Anda dapat mengubah depend= dan _python= di PKGBUILD menjadi python3.7 dan membangun kembali dan itu akan bekerja untuk Anda.

Instalasi AUR pkg semuanya salah. Modul yang diperlukan dipasang di folder usr/lib/site-packages di luar ../lib/python3.8/site-packages.

@noelar - /usr/lib/python3.8/site-packages/ adalah tempat yang tepat untuk ini. Lihat: https://bugs.archlinux.org/task/60929

Jangan ragu untuk mengoreksi saya jika saya salah.

Graysky2 benar: Tempat untuk menginstal perpustakaan memang direktori paket situs. Tetapi...

Autojump seperti itu hanya membutuhkan python >= 2.6. Apakah ada alasan kuat untuk memaksa >= 3.8?

Jika tidak, saya sarankan untuk mendapatkan versi python yang benar dari sistem dengan melakukan sesuatu seperti ini:

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

Ini akan menghilangkan kebutuhan untuk mengacaukan paket di bagian persiapan serta menggunakan jalur yang benar untuk sistem.

Memaksa versi python ke 3.8 merusak paket untuk setiap sistem (Arch serta turunannya) yang tidak atau tidak bisa karena alasan apa pun menggunakan versi python terbaru. Selain itu paket akan rusak setelah versi yang dikirimkan dengan Arch berubah lagi.

Penafian: Saya bukan seorang programmer atau pengelola paket, jadi sebagian atau semua dari apa yang saya katakan mungkin tidak masuk akal atau mungkin ada cara yang lebih ringkas atau elegan untuk mencapai tujuan yang sama.

Saya suka ide itu tetapi jika saya itu hanya akan berfungsi jika mesin build memiliki versi python yang sama dengan mesin klien. Dengan kata lain, seseorang dapat membangun mesin dengan 3.8 (Arch) tetapi kemudian menginstal pada Manjaro (3.7). Dengan asumsi tidak ada perbedaan 3,7 vs 3,8 itu hanya akan memiliki direktori tambahan ....

Adakah yang tahu pasti jika sebenarnya ada perbedaan, yaitu apakah autojump yang dibangun terhadap python3.8 bekerja pada sistem dengan python3.7?

Apakah /usr/lib/python/site-packages/ yang tidak berversi dapat diterima atau apakah itu berversi karena alasan yang saya tanyakan di atas?

Saya sama sekali bukan ahli python, jadi mungkin saya tidak mengerti masalah sebenarnya.

Dari melihat autojump, itu adalah python murni (yah dan beberapa rasa shell, tapi itu bukan intinya). Pernyataan kompilasi dalam PKGBUILD menghasilkan kode byte perantara (*.pyc) untuk perpustakaan (sejauh yang saya tahu itu bergantung pada versi, tetapi tetap dibuang saat dijalankan jika versi tidak cocok). Biasanya kode byte dibuat terlebih dahulu untuk memungkinkan pengguna yang tidak memiliki izin menulis untuk mendapatkan manfaat dari peningkatan kecepatan juga.
Mengingat bahwa izin menulis tetap diperlukan untuk menginstal, masuk akal bagi saya untuk menghasilkan kode byte untuk perpustakaan pada waktu penginstalan, bukan pada waktu pembuatan.

Sumber python dari autojump ditulis sedemikian rupa sehingga tidak peduli versi python interpreter mana yang tersedia, asalkan >= 2.6.

Tetapi sekali lagi: Bukan ahli, hanya menyukai autojump dan mencoba-coba python.

Manjaro di sini juga,

seperti yang @graysky2 katakan,

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

Saya pikir itu akan baik-baik saja.

@pwoehrer - Masalahnya adalah bahwa seseorang perlu membangun kembali ini terhadap rilis versi python utama (yaitu 3,6 hingga 3,7 atau 3,7 hingga 3,8). Jika ada di repo resmi, pengelola hanya akan menabrak pkgver dan mengubah variabel _python tetapi karena ini adalah AUR, saya harus memaksanya dengan versi python3 dep.

Jika ada cara yang lebih cerdas untuk menjaga konsistensi, silakan bagikan dengan saya.

Misalnya, jika Anda membuat lompatan otomatis terhadap python v3.7.x, Anda akan mendapatkan:

% 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
...

Saya khawatir selama *.pyc yang dikompilasi disertakan dalam paket, tidak ada cara untuk mewujudkannya. Tetapi seperti yang saya katakan sebelumnya, sebenarnya tidak perlu memasukkannya ke dalam paket. Akan lebih baik untuk membuatnya pada saat instalasi, karena mereka akan menggunakan versi python dari sistem dan mereka tidak bergantung pada platform. *.pc dimaksudkan untuk dibuat saat perpustakaan dijalankan pertama kali.

Juga mereka tidak sepenuhnya diperlukan untuk autojump berfungsi, mereka hanya ada untuk memberikan sedikit kecepatan pada sistem di mana pengguna tidak memiliki izin menulis ke direktori paket situs.

Jadi: Tidak, saya rasa tidak ada cara yang lebih baik jika *.pyc perlu disertakan dalam paket. :-(

Masalah dengan tidak melakukannya dengan cara ini diuraikan dalam FS#60929

Jika kami mengimplementasikan autojump dalam bahasa yang dikompilasi, kami tidak perlu khawatir tentang masalah seperti ini. Saya telah menulis ulang di Go dan telah menggunakannya untuk waktu yang lama, mungkin Anda ingin mencobanya. (https://github.com/suzaku/shonenjump)

Saya menemui masalah ini ketika saya memutakhirkan python3.8 ke python3.9, jadi saya hanya menyalin beberapa paket autojump di python3.8 ke python3.9, dan saya memecahkan masalah ini.

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

Saya menemui masalah ini ketika saya memutakhirkan python3.8 ke python3.9, jadi saya hanya menyalin beberapa paket autojump di python3.8 ke python3.9, dan saya memecahkan masalah ini.

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

Anda dapat mencoba alat saya, itu dapat dengan mudah diinstal dengan brew .

@heppen - Anda harus membangun kembali seperti skrip python pada benjolan versi utama.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat