Setiap kali saya mengetik perintah "omong kosong", pesan kesalahan python ini dihasilkan. Perintah normal berfungsi dengan baik. Adakah yang tahu cara men-debug ini?
$ somenonexistingcommand
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site.py", line 553, in <module>
main()
File "/usr/local/lib/python2.7/site.py", line 535, in main
known_paths = addusersitepackages(known_paths)
File "/usr/local/lib/python2.7/site.py", line 268, in addusersitepackages
user_site = getusersitepackages()
File "/usr/local/lib/python2.7/site.py", line 243, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/local/lib/python2.7/site.py", line 233, in getuserbase
USER_BASE = get_config_var('userbase')
File "/usr/local/lib/python2.7/sysconfig.py", line 535, in get_config_var
return get_config_vars().get(name)
File "/usr/local/lib/python2.7/sysconfig.py", line 434, in get_config_vars
_init_posix(_CONFIG_VARS)
File "/usr/local/lib/python2.7/sysconfig.py", line 298, in _init_posix
raise IOError(msg)
IOError: invalid Python installation: unable to open /usr/include/python2.7/pyconfig.h (No such file or directory)
$ echo this works fine, however
this works fine, however
$
EDIT - setelah memperbaiki / usr / bin / python saya, saya sekarang mendapatkan pesan kesalahan python yang berbeda ini:
$ yetanothernonexistingcommand
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 10, in <module>
import CommandNotFound
ImportError: No module named CommandNotFound
Entah bagaimana, python sedang dijalankan setiap kali saya salah ketik perintah.
Jawaban:
Ok, itu membuat segalanya sedikit lebih jelas.
command-not-found
adalah program python, yang berjalan ketika perintah Anda bukan sesuatu yang ditemukan pada sistem. (Fungsinya untuk menyarankan alternatif dan koreksi jika terjadi kesalahan ketik dll.) Lihat/usr/bin/command-not-found
. Ia mencoba mengimporCommandNotFound
modul dan tidak dapat, dengan jelas menunjuk ke instalasi python yang kacau. Saya tidak familiar dengan itucommand-not-found
, tapi saya pikir memperbaiki instalasi Python Anda akan membuat masalah hilang.Hanya untuk menguraikan sedikit, apa yang mungkin terjadi adalah bahwa
command-not-found
modul terletak di suatu tempat di mana python default Anda tidak mencarinya. Masalah jalur, pada dasarnya.Saran debug:
1) Untuk mulai dengan, dari mana output
dan apa paket / instalasi milik file itu?
2) Apa output untuk instalasi Anda yang sesuai dengan kode di bawah ini? Path di sini adalah path import python ini.
sumber
# apt-get remove command-not-found
...command-not-found
tampaknya rusak (meskipun sulit untuk mengetahui apakah "kesalahan" adalah hasil yang diharapkan saat mencari "perintah-tidak-ditemukan" ...)Saya mengalami hal ini ketika saya memutakhirkan dari stock 2.6 yang datang dengan instalasi ubuntu saya ke python 3.2, dengan menetapkan alternatif default ke 3.2 daripada 2.6.
Jika Anda melihat
/etc/bash.bashrc
file Anda, ada baris yang memberitahukannya untuk menjalankan skrip python ini untuk mencari alternatif dalam repo. Ada paket untuk itu, namun Anda tidak dapat menghapus paket setelah Anda memutakhirkan. Aku hanya cukup memindahkan/usr/share/command-not-found
dan/usr/lib/command_not_found_handler
dan restart istilah saya dan bekerja seperti baik ol' bash:command not found
.sumber
command_not_found
handler, jangan main-main dengan/usr
(yang dapat membuat pemutakhiran berikutnya gagal atau dibatalkan dengan pemutakhiran berikutnya). Sebaliknya, ubahlah/etc/bash.bashrc
. Atau menonaktifkan ini dalam Anda sendiri~/.bashrc
denganunset -f command_not_found_handle
./etc/bash.bashrc
disediakan olehbash
paket, sehingga Anda dapat memutus pembaruan untuk paket itu.Saya mengalami kesalahan yang sama ini setelah menginstal Python 3.5.0 pada Ubuntu 14.04 LTS saya (yang memiliki sistem python versi 3.4.0).
Setelah saya membuka
/usr/lib/command-not-found
, saya menyadari kesalahan ini adalah karena sistem mengeksekusi skrip ini menggunakan python3.5.0 yang baru diinstal, karena menginstal Python3.5.0 menciptakan mengarah sistem untuk menggunakannya ketika Anda mengetikpython3
.Kesalahan ini dapat dengan mudah diperbaiki dengan mengubah baris pertama dari
untuk
sumber
Masalahnya adalah dengan
$PATH
variabel lingkungan Anda . Anda kemungkinan besar telah mengacaukannya. Seharusnya mirip dengan ini:Lihat utas Linux Mint ini: http://forums.linuxmint.com/viewtopic.php?f=18&t=119561 .
Anda dapat memperbaiki
$PATH
shell Anda dengan perintah ini:Ini sementara! Jika masalah berlanjut dengan reboot maka kemungkinan besar Anda telah menyembunyikannya
$PATH
di salah satu file pengaturan lingkungan di bawah/etc
.sumber
Paket "command-not-found" adalah utilitas linux; ia merespons perintah yang tidak dikenal pada prompt perintah shell, tidak hanya dalam sesi python. (Saya melihat ada juga paket python dari nama ini.)
Ini memiliki python di antara dependensinya, yaitu menggunakan python ketika dipicu; sehingga menjelaskan mengapa python dipanggil kapan pun Anda mengetik perintah yang shell tidak dapat temukan di PATH Anda.
Saya melihat ada paket 'apt' untuk menginstal perintah-tidak-ditemukan di Linux; untuk Debian linux, ini dikatalogkan di:
https://packages.debian.org/sid/admin/command-not-found
sumber
Mengomentari semua baris yang bertanggung jawab
command-not-found
dalam/etc/bash.bashrc
menyelesaikan masalah, yang dibuat dengan mengganti versi Python.sumber