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-aptadalah 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 python3tautan default . Pernah. Ini juga berlaku untuk pythontautan - 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 python3tautan.
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
python3link 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-alternativesuntuk 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/ python3untuk tautan atau alias Anda.
Atau tambahkan sendiri python/ python3tautan Anda ke PATH (seperti yang dilakukan lingkungan virtual), tanpa mengubah tautan sistem.