जब भी मैं एक बकवास आदेश टाइप करता हूं तो यह अजगर त्रुटि संदेश क्यों उत्पन्न होता है?


17

जब भी मैं कोई "बकवास" कमांड टाइप करता हूं, यह अजगर त्रुटि संदेश उत्पन्न होता है। सामान्य आदेश ठीक काम करते हैं। किसी भी विचार यह कैसे डीबग करने के लिए?

$ 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 - मेरे / usr / बिन / अजगर को ठीक करने के बाद, मुझे अब यह अलग अजगर त्रुटि संदेश मिलता है:

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

जब भी मैं कोई गलती करता हूं, किसी तरह अजगर को चलाया जा रहा है।


1
@्रीपर: दिलचस्प है। कुछ आवारा अवलोकन। क्या आपके .bashrc में अजगर के साथ कुछ भी जुड़ा हुआ है? क्या आपको अन्य उपयोगकर्ता खातों के साथ ऐसा ही व्यवहार मिलता है? आपके पास स्थानीय रूप से अजगर 2.7 स्थापित क्यों है? इस स्थापना पर डिफ़ॉल्ट आधिकारिक अजगर क्या है, और यदि 2.7 नहीं है, तो क्या आपने इसे स्थापित किया है? Ubuntu संस्करण क्या है?
फहीम मीठा

@ फहीम - मुझे .bashrc से संबंधित कुछ भी अजगर दिखाई नहीं देता है। मैंने खुद स्थानीय स्तर पर अजगर को स्थापित किया। मुझे पता है कि मशीन में दो अन्य अजगर भी स्थापित हैं। मेरे पास उबंटू 10.10 है।
ripper234

यह एक अजगर की तरह थोड़ा बदबू आ रही है स्थापना भटक गई। क्या संस्करण आधिकारिक सिस्टम अजगर स्थापित हैं, और आपने स्थानीय रूप से 2.7 क्यों स्थापित किया है? क्या यह आधिकारिक रूप से उपलब्ध संस्करणों में से एक नहीं है?
फहीम मीठा

@ फहीम - मैं आपके सवाल को नहीं समझता। "आधिकारिक" से आपका क्या मतलब है? मुझे अजगर 2.7 की आवश्यकता थी, इसलिए मैंने इसे स्थापित किया। मैं इस बॉक्स का एडमिन हूं। मैंने मेक इन / मेकअप स्थापित करके अजगर स्थापित किया, कुछ भी गड़बड़ नहीं किया (मुझे लगता है)।
ripper234

@ripper: अर्थ, ubuntu ने इसे बाइनरी पैकेज के रूप में प्रदान किया। जब आप अजगर टाइप करते हैं, तो आपको कौन सा अजगर मिलता है?
फहीम मीठा

जवाबों:


13

ठीक है, जो चीजों को थोड़ा स्पष्ट करता है। command-not-foundएक अजगर कार्यक्रम है, जो तब चलता है जब आपका कमांड सिस्टम पर कुछ नहीं मिलता है। (इसका कार्य गलत कार्य के मामले में विकल्प और सुधार के सुझाव देना है) देखें /usr/bin/command-not-found। यह CommandNotFoundमॉड्यूल को आयात करने की कोशिश कर रहा है और स्पष्ट रूप से एक पेंचदार पायथन इंस्टॉलेशन की ओर इशारा करने में असमर्थ है। मैं उस फेमिलियर के साथ नहीं हूं command-not-found, लेकिन मुझे लगता है कि आपके पायथन इंस्टॉलेशन को ठीक करने से समस्या दूर हो जाएगी।

बस थोड़ा सा विस्तार करने के लिए, शायद यह क्या हो रहा है कि 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...
सिमोन

"स्क्रू अप अजगर स्थापना" - कोई भी विचार जो वास्तव में गायब है। क्या CommandNotFound एक कोर पायथन मॉड्यूल है, या मुझे इसे अलग से स्थापित करना चाहिए / कर सकता हूं?
ripper234

@ripper: CommandNotFound कमांड- नॉट-फाउंड पैकेज का हिस्सा है , जिसे आपकी मशीन पर पहले से ही इंस्टॉल होना चाहिए, अन्यथा आप यह संदेश नहीं देख पाएंगे। हालाँकि, आप आसानी से सत्यापित कर सकते हैं कि पैकेज प्रबंधक को क्वेरी करके। dpkg -l कमांड-नहीं मिला। आपकी समस्या यह है कि आपकी डिफ़ॉल्ट अजगर स्थापना इस मॉड्यूल को नहीं देख रही है। मैं ऊपर डिबग करने के लिए कुछ कदम जोड़ूंगा। दूसरों को संशोधित और सही करने के लिए स्वतंत्र महसूस करें।
फहीम मीठा

- इस फॉलोअप प्रश्न देखें unix.stackexchange.com/questions/9711/...
ripper234

command-not-foundटूटे हुए प्रतीत होने वाले लिंक (हालाँकि "कमांड" नहीं-पाया "" की खोज करते समय "त्रुटि" यदि अपेक्षित परिणाम है तो यह बताना कठिन है ...)
निकाना रेक्लाविक्स

3

मेरे उबंटू 14.04 एलटीएस पर पायथन 3.5.0 (जो कि संस्करण 3.4 के सिस्टम पायथन है) को स्थापित करने के बाद मुझे यही त्रुटि थी।

मेरे द्वारा खोलने के बाद /usr/lib/command-not-found, मैंने महसूस किया कि यह त्रुटि इस सिस्टम को नई स्थापित python3.5.0 का उपयोग करके निष्पादित करने के कारण है, क्योंकि Python3.5.0 को बनाने से सिस्टम आपके उपयोग करने के समय इसे उपयोग करने की ओर जाता है python3

पहली पंक्ति को बदलकर इस त्रुटि को आसानी से ठीक किया जा सकता है

#!/usr/bin/python3

सेवा

#!/usr/bin/python3.4  

यह सबसे अच्छा उत्तर imo है। मेरे मामले में यह एक नए मामूली संस्करण के लिए python3 को सहानुभूति देने के लिए एक मूर्खतापूर्ण निर्णय था, यह सोचकर कि संगतता को तोड़ना नहीं चाहिए। लेकिन हाँ, सबक सीखा।
ग्यूब्रश थ्रीपवुड

2

मैं इसमें भाग गया जब मैंने स्टॉक 2.6 से अपग्रेड किया जो कि मेरे ubuntu इंस्टॉलेशन के साथ 3.2 python में आया, डिफ़ॉल्ट विकल्प को 2.6 के बजाय 3.2 के लिए सेट करने के साथ।

यदि आप अपनी /etc/bash.bashrcफ़ाइल को देखते हैं, तो एक पंक्ति है जो इसे इस अजगर लिपि को चलाने के लिए कहती है जो कि रिपॉज में विकल्प की तलाश में है। इसके लिए एक पैकेज है, हालांकि आपके द्वारा अपग्रेड करने के बाद आप पैकेज को हटा नहीं सकते। मैंने अभी-अभी /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
गिल्स एसओ- बुराई को रोकना '

विशेष रूप से, पैकेज /etc/bash.bashrcद्वारा प्रदान किया जाता bashहै, ताकि आप उस पैकेज के अपडेट को तोड़ सकें।
सिरो सेंटिल्ली 新疆 改造 iro 六四 事件 '

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

"कमांड-नॉट-फाउंड" पैकेज एक लिनक्स उपयोगिता है; यह केवल शेल्थन सत्रों के भीतर ही नहीं, कमांड शेल प्रॉम्प्ट पर अज्ञात कमांडों का जवाब देता है। (मैं देख रहा हूं कि इस नाम का एक अजगर पैकेज भी है।)

इसकी निर्भरता के बीच में अजगर है, अर्थात जब ट्रिगर किया जाता है तो यह अजगर का उपयोग करता है; इसलिए कि जब भी आप एक कमांड टाइप करें, जो कि आपके PATH पर शेल नहीं पा सकता है, तो अजगर को क्यों बुलाया गया है।

मैं देख रहा हूँ कि लिनक्स में कमांड-नॉट-इनस्टॉल करने के लिए एक 'apt' पैकेज है; डेबियन लिनक्स के लिए, इस पर सूचीबद्ध है:

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


0

समस्या command-not-foundको /etc/bash.bashrcहल करने के लिए जिम्मेदार सभी लाइनों को टिप्पणी करते हुए , जिसे पायथन संस्करणों को स्विच करके बनाया गया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.