web-dev-qa-db-ja.com

python意味のないコマンドを入力するたびにエラーメッセージが生成されるのはなぜですか?

「ナンセンス」コマンドを入力するたびに、このpythonエラーメッセージが生成されます。通常のコマンドは正常に動作します。これをデバッグする方法はありますか?

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

どういうわけか、pythonは、コマンドを誤って入力するたびに実行されます。

18
ripper234

OK、それは物事を少し明確にします。 command-not-found はpythonプログラムであり、システムでコマンドが見つからない場合に実行されます。(その機能は、代替案と修正を提案することです)誤入力など))/usr/bin/command-not-foundを参照してください。CommandNotFoundモジュールをインポートしようとしていますが、できません。ねじ込まれたpythonインストールを指します。私はm command-not-foundに慣れていませんが、Pythonのインストールを修正すると問題が解消されると思います。

少し詳しく説明すると、おそらくcommand-not-foundモジュールは、デフォルトのpythonが探していない場所にあります。基本的にパスの問題です。

デバッグの提案:

1)まず、何からの出力か

$ which python

そして、そのファイルはどのパッケージ/インストールに属していますか?

2)以下のコードに対応するインストールの出力は何ですか?ここでのパスは、このpythonのインポートパスです。

$ 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']
13
Faheem Mitha

Ubuntu 14.04 LTSにPython 3.5.0(システムpython)がインストールされている)をインストールした後も、同じエラーが発生しました。

/usr/lib/command-not-foundを開いた後、新しくインストールされたpython3.5.0を使用してシステムがこのスクリプトを実行したことがこのエラーの原因であることに気付きました。Python3.5.0をインストールすると、python3

このエラーは、最初の行を

#!/usr/bin/python3

#!/usr/bin/python3.4  
3
user3667217

デフォルトの代替を2.6ではなく3.2に設定して、ubuntuインストールに付属する標準の2.6から3.2 pythonにアップグレードしたときに、この問題に遭遇しました。

あなたがあなたの/etc/bash.bashrcファイルこれを実行するように指示する行がありますpythonスクリプトでリポジトリ内の代替を検索します。そのためのパッケージがありますが、アップグレード後にパッケージを削除することはできません。単に/usr/share/command-not-foundおよび/usr/lib/command_not_found_handlerと私の用語を再開し、それは良いol 'bashのように機能します:command not found

2
RoboticGolem

command-not-found/etc/bash.bashrcを担当するすべての行をコメント化すると、Pythonバージョンを切り替えることによって作成された)問題が解決しました。

0
user64802

問題は$PATH環境変数にあります。あなたはおそらくそれを台無しにしたでしょう。これは次のようになります。

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

このLinux Mintスレッドを参照してください: 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の下にある環境設定ファイルの1つに/etcが含まれている可能性があります。

0
slm

「command-not-found」パッケージはLinuxユーティリティです。 pythonセッション内だけでなく、コマンドシェルプロンプトで不明なコマンドに応答します(この名前のpythonパッケージもあるようです。)

依存関係の中にpythonがあります。つまり、トリガー時にpythonを使用します。そのため、pythonが呼び出されるたびにシェルがPATHで見つけられないコマンドを入力します。

Linuxにcommand-not-foundをインストールするための「apt」パッケージがあるようです。 Debian linuxの場合、これは次の場所でカタログ化されています。

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

0
user312543