Saya melihat semua orang mengatakan bagaimana memperbaikinya dengan penyalinan aneh dll, tetapi tidak ada yang benar-benar mengatakan mengapa masalah itu terjadi.
Jadi izinkan saya menjelaskan, bagi Anda yang menyukai saya tidak ingin mengacaukan file sistem hanya karena seseorang di SO yang memberi tahu mereka.
Masalahnya adalah:
- banyak skrip sistem memiliki python3 shebang yang di-hardcode ke dalamnya. Anda dapat memeriksanya sendiri:
~$ grep -R "\#\!/usr/bin/python3" /usr/lib/*
/usr/lib/cnf-update-db:
/usr/lib/command-not-found:
/usr/lib/cups/filter/pstotiff:
/usr/lib/cups/filter/rastertosag-gdi:
grep: /usr/lib/cups/backend/cups-brf: Permission denied
/usr/lib/cups/backend/hpfax:
/usr/lib/language-selector/ls-dbus-backend:
/usr/lib/python3/dist-packages/language_support_pkgs.py:
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:
/usr/lib/python3/dist-packages/cupshelpers/installdriver.py:
/usr/lib/python3/dist-packages/cupshelpers/openprinting.py:
/usr/lib/python3/dist-packages/cupshelpers/xmldriverprefs.py:
/usr/lib/python3/dist-packages/cupshelpers/smburi.py:
/usr/lib/python3/dist-packages/cupshelpers/ppds.py:
/usr/lib/python3/dist-packages/cupshelpers/debug.py:
/usr/lib/python3/dist-packages/DistUpgrade/dist-upgrade.py:
/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py:
/usr/lib/python3/dist-packages/CommandNotFound/db/db.py:
/usr/lib/python3/dist-packages/Quirks/quirkreader.py:
grep: /usr/lib/ssl/private: Permission denied
/usr/lib/system-service/system-service-d:
/usr/lib/ubuntu-release-upgrader/check-new-release-gtk:
/usr/lib/ubuntu-release-upgrader/do-partial-upgrade:
/usr/lib/ubuntu-release-upgrader/check-new-release:
/usr/lib/update-notifier/package-data-downloader:
/usr/lib/update-notifier/backend_helper.py:
/usr/lib/update-notifier/apt_check.py:
/usr/lib/update-notifier/apt-check:
- python apt package
python-apt
/ python3-apt
adalah paket sistem, jadi ini untuk sistem default python
Jadi, skrip akan selalu mendapatkan versi yang saat ini ditautkan python3
, tetapi gagal karena paket apt tidak ada.
Solusi umum: JANGAN PERNAH mengubah python3
tautan default . Pernah. Ini juga berlaku untuk python
tautan - jika aplikasi ditulis dengan Python2 dengan beberapa elemen sintaks lama yang tidak berfungsi di Python3, aplikasi tidak akan berfungsi.
[Terminal saya rusak seperti itu karena saya menggunakan Terminator, yang tampaknya ditulis dengan Python2.7 tidak kompatibel dengan Python3.]
Solusi yang disajikan di sini menyarankan untuk menyalin / menautkan file paket apt atau mengubah python3
tautan.
Mari kita analisis keduanya:
- Menyalin / menautkan paket apt
Ini seharusnya tidak menjadi masalah karena dari sekitar Python3.4 semua skrip python juga berfungsi pada versi yang lebih baru.
Sejauh ini. Tetapi mungkin rusak di masa depan - jika Anda mempertahankan sistem Anda cukup lama.
- Mengubah
python3
link kembali
Ini adalah solusi yang bagus karena kita bisa kembali ke "jangan pernah mengubah tautan"
"Tapi aku suka mengetik saja python
!" - Aku juga menyukainya! Begitulah cara saya mengatasi masalah ini sejak awal!
Secara umum, Anda harus menghindari mengubah tautan sistem secara manual - gunakan update-alternatives
untuk menautkan versi yang berbeda . Ini berlaku untuk aplikasi apa pun dengan banyak versi. Ini masih akan merusak skrip sistem tersebut (karena memang mengubah tautan), tetapi Anda dapat beralih dengan mudah, tanpa khawatir apakah Anda meletakkan tautan dan tujuan dalam urutan yang benar atau salah ketik.
Pertimbangkan untuk menggunakan nama lain selain python
/ python3
untuk tautan atau alias Anda.
Atau tambahkan sendiri python
/ python3
tautan Anda ke PATH (seperti yang dilakukan lingkungan virtual), tanpa mengubah tautan sistem.