ทำไมข้อความแสดงข้อผิดพลาดหลามนี้จึงถูกสร้างขึ้นทุกครั้งที่ฉันพิมพ์คำสั่งไร้สาระ?


16

เมื่อใดก็ตามที่ฉันพิมพ์คำสั่ง "ไร้สาระ" ข้อความแสดงข้อผิดพลาดหลามนี้จะถูกสร้างขึ้น คำสั่งปกติทำงานได้ดี มีความคิดวิธีการแก้ไขข้อบกพร่องนี้หรือไม่?

$ 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
$

แก้ไข - หลังจากแก้ไข / usr / bin / python ของฉันตอนนี้ฉันได้รับข้อความแสดงข้อผิดพลาด python ที่แตกต่างกัน:

$ yetanothernonexistingcommand
Traceback (most recent call last):
  File "/usr/lib/command-not-found", line 10, in <module>
    import CommandNotFound
ImportError: No module named CommandNotFound

อย่างไรก็ตามหลามจะถูกเรียกใช้เมื่อใดก็ตามที่ฉันพิมพ์คำสั่งผิด


1
@ripper: น่าสนใจ การสังเกตเร่ร่อนไม่กี่ . bashrc ของคุณเชื่อมต่อกับ python หรือไม่ คุณมีพฤติกรรมแบบเดียวกันนี้กับบัญชีผู้ใช้อื่น ๆ หรือไม่? ทำไมคุณถึงติดตั้ง python 2.7 ในเครื่อง? ไพ ธ อนอย่างเป็นทางการเริ่มต้นของการติดตั้งนี้คืออะไรและถ้าไม่ใช่ 2.7 คุณติดตั้งไว้หรือไม่ รุ่นนี้ของ Ubuntu คืออะไร?
Faheem Mitha

@Faheem - ฉันไม่เห็นสิ่งที่หลามเกี่ยวข้องใน. bashrc ฉันติดตั้งหลามในตัวฉันเอง ฉันรู้ว่าเครื่องมีงูเหลือมอีกสองตัวติดตั้งอยู่เช่นกัน ฉันติดตั้ง Ubuntu 10.10 แล้ว
ripper234

สิ่งนี้มีกลิ่นเล็กน้อยเหมือนการติดตั้งไพ ธ อน งูเหลือมรุ่นเป็นทางการของระบบที่ติดตั้งคืออะไรและทำไมคุณถึงติดตั้ง 2.7 ในเครื่อง? ไม่ใช่รุ่นที่เป็นทางการหรือไม่
Faheem Mitha

@Faheem - ฉันไม่เข้าใจคำถามของคุณ "ทางการ" หมายถึงอะไร? ฉันต้องการ python 2.7 ดังนั้นฉันจึงติดตั้ง ฉันเป็นผู้ดูแลระบบของกล่องนี้ ฉันติดตั้งหลามด้วยการทำการติดตั้ง / ทำการติดตั้งไม่ได้ทำอะไรที่น่ากลัว (ฉันคิด)
ripper234

@ripper: ความหมายอูบุนตูให้มันเป็นแพคเกจไบนารี เมื่อคุณพิมพ์ python คุณจะได้รับ python ใด
Faheem Mitha

คำตอบ:


12

ตกลงนั่นทำให้สิ่งต่าง ๆ ชัดเจนขึ้น command-not-foundเป็นโปรแกรมไพ ธ อนซึ่งรันเมื่อคำสั่งของคุณไม่ใช่สิ่งที่พบในระบบ (ฟังก์ชั่นของมันคือการแนะนำทางเลือกและการแก้ไขในกรณีของ mistyping ฯลฯ ) /usr/bin/command-not-foundดู กำลังพยายามนำเข้าCommandNotFoundโมดูลและไม่สามารถระบุได้อย่างชัดเจนถึงการติดตั้งหลามแบบเมาค้าง ฉันไม่ใช่คนที่คุ้นเคยcommand-not-foundแต่ฉันคิดว่าการติดตั้ง Python ของคุณจะทำให้ปัญหาหายไป

เพื่ออธิบายรายละเอียดเล็กน้อยสิ่งที่อาจเกิดขึ้นคือcommand-not-foundโมดูลนั้นอยู่ที่ไหนสักแห่งที่ไพ ธ อนเริ่มต้นไม่ได้มองหา ปัญหาเส้นทางโดยทั่วไป

คำแนะนำการแก้ไขข้อบกพร่อง:

1) เพื่อเริ่มต้นกับสิ่งที่เป็นผลลัพธ์จาก

$ which python

ไฟล์นั้นเป็นของอะไร?

2) ผลลัพธ์สำหรับการติดตั้งของคุณสอดคล้องกับรหัสด้านล่างคืออะไร? เส้นทางที่นี่เป็นเส้นทางนำเข้าของงูใหญ่

$ python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode']

1
วิธีแก้ปัญหาหนึ่งที่เป็นไปได้คือ# apt-get remove command-not-found...
simon

"การติดตั้งงูหลามเมา" - ความคิดใด ๆ ว่าอะไรหายไป CommandNotFound เป็นโมดูลหลักหลามหรือฉันสามารถ / ควรติดตั้งแยกต่างหากหรือไม่?
ripper234

@ripper: CommandNotFound เป็นส่วนหนึ่งของแพ็คเกจที่ไม่พบคำสั่งซึ่งจะต้องติดตั้งในเครื่องของคุณแล้วไม่เช่นนั้นคุณจะไม่เห็นข้อความนี้ อย่างไรก็ตามคุณสามารถยืนยันได้อย่างง่ายดายโดยการสอบถามผู้จัดการแพ็คเกจ คำสั่ง dpkg -l ไม่พบ ปัญหาของคุณคือการติดตั้ง Python เริ่มต้นของคุณไม่เห็นโมดูลนี้ ฉันจะเพิ่มบางขั้นตอนเพื่อแก้ไขข้อบกพร่องด้านบน คนอื่น ๆ โปรดอย่าลังเลที่จะแก้ไขและแก้ไข
Faheem Mitha

ดูคำถามติดตามผลนี้ - unix.stackexchange.com/questions/9711/…
ripper234

ลิงก์ที่command-not-foundดูเหมือนจะเสียหาย (แม้ว่าจะยากที่จะบอกได้ว่า "ข้อผิดพลาด" เป็นผลลัพธ์ที่คาดหวังเมื่อค้นหา "คำสั่งไม่พบ" ... )
Nikana Reklawyks

2

ฉันพบปัญหานี้เมื่อฉันอัพเกรดจากสต็อก 2.6 ที่มาพร้อมกับการติดตั้ง Ubuntu ของฉันเป็น 3.2 ไพ ธ อนด้วยการตั้งค่าทางเลือกเริ่มต้นเป็น 3.2 แทนที่จะเป็น 2.6

หากคุณดู/etc/bash.bashrcไฟล์ของคุณจะมีบรรทัดที่บอกให้รันสคริปต์ python นี้เพื่อค้นหาทางเลือกใน repos มีแพ็คเกจอยู่ แต่คุณไม่สามารถลบแพ็คเกจได้เมื่อคุณอัพเกรด ฉันเพียงแค่ย้าย/usr/share/command-not-foundและ/usr/lib/command_not_found_handlerและเริ่มต้นใหม่ระยะของฉันและมันทำงานเหมือนดี 'ol command not foundทุบตี:


6
หากคุณต้องการปิดการใช้งานcommand_not_foundตัวจัดการอย่ายุ่งกับ/usr(ที่สามารถทำให้การอัพเกรดตามมาล้มเหลวหรือยกเลิกได้โดยการอัพเกรดครั้งต่อไป) /etc/bash.bashrcแต่การเปลี่ยนแปลง หรือปิดการใช้งานนี้ของคุณเองด้วย~/.bashrc unset -f command_not_found_handle
Gilles 'หยุดความชั่วร้าย'

โดยเฉพาะอย่างยิ่งที่/etc/bash.bashrcมีให้โดยbashแพคเกจดังนั้นคุณสามารถทำลายการปรับปรุงแพคเกจที่
Ciro Santilli 新疆改造中心法轮功六四事件

2

ฉันมีข้อผิดพลาดเดียวกันนี้หลังจากติดตั้ง Python 3.5.0 บน Ubuntu 14.04 LTS ของฉัน (ซึ่งมีงูใหญ่ระบบของรุ่น 3.4.0)

หลังจากที่ผมเปิด/usr/lib/command-not-foundฉันรู้ข้อผิดพลาดนี้เนื่องจากระบบสคริปต์นี้โดยใช้ python3.5.0 ที่ติดตั้งใหม่เพราะการติดตั้ง Python3.5.0 python3สร้างโอกาสในการขายระบบที่จะใช้มันเมื่อคุณพิมพ์ใน

ข้อผิดพลาดนี้สามารถแก้ไขได้อย่างง่ายดายโดยเปลี่ยนบรรทัดแรกจาก

#!/usr/bin/python3

ถึง

#!/usr/bin/python3.4  

นี่คือคำตอบที่ดีที่สุด ในกรณีของฉันมันเป็นการตัดสินใจที่โง่ที่จะเชื่อมโยง python3 กับรุ่นรองใหม่กว่า แต่ใช่บทเรียนเรียนรู้
Guybrush Threepwood

0

ปัญหาเกิดขึ้นกับ$PATHตัวแปรสภาพแวดล้อมของคุณ คุณมักจะทำมันยุ่ง มันควรจะคล้ายกับสิ่งนี้:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

ดูนี้ด้ายลินุกซ์มิ้นท์: http://forums.linuxmint.com/viewtopic.php?f=18&t=119561

คุณสามารถซ่อมแซมของคุณ $PATHเชลล์ด้วยคำสั่งนี้:

$ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

นี่เป็นเพียงชั่วคราว! หากยังคงมีปัญหาเกี่ยวกับการรีบูตแล้วคุณได้ทยอยมากที่สุดน่าจะเป็นหนึ่งในแฟ้มการตั้งค่าสภาพแวดล้อมของคุณภายใต้$PATH/etc


0

แพ็คเกจ "command-not-Found" เป็นยูทิลิตี linux มันตอบสนองต่อคำสั่งที่ไม่รู้จักที่พรอมต์คำสั่งเชลล์ไม่เพียง แต่ภายในช่วงหลาม (ฉันเห็นว่ายังมีชุดงูหลามของชื่อนี้ด้วย)

มันมีไพ ธ อนอยู่ระหว่างการอ้างอิงเช่นใช้ไพ ธ อนเมื่อถูกกระตุ้น เพื่อให้บัญชีว่าเหตุใดจึงมีการเรียก python เมื่อใดก็ตามที่คุณพิมพ์คำสั่งที่เชลล์ไม่สามารถหาได้บน PATH ของคุณ

ฉันเห็นว่ามีแพกเกจ 'apt' เพื่อติดตั้ง command-not-found ใน Linux; สำหรับ Debian linux นี่คือแคตตาล็อกที่:

https://packages.debian.org/sid/admin/command-not-found


0

ใส่ความคิดเห็นในบรรทัดทั้งหมดที่รับผิดชอบcommand-not-foundในการ/etc/bash.bashrcแก้ปัญหาซึ่งสร้างขึ้นโดยการสลับรุ่น Python

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.