「ナンセンス」コマンドを入力するたびに、この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は、コマンドを誤って入力するたびに実行されます。
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']
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
デフォルトの代替を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
。
command-not-found
の/etc/bash.bashrc
を担当するすべての行をコメント化すると、Pythonバージョンを切り替えることによって作成された)問題が解決しました。
問題は$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
が含まれている可能性があります。
「command-not-found」パッケージはLinuxユーティリティです。 pythonセッション内だけでなく、コマンドシェルプロンプトで不明なコマンドに応答します(この名前のpythonパッケージもあるようです。)
依存関係の中にpythonがあります。つまり、トリガー時にpythonを使用します。そのため、pythonが呼び出されるたびにシェルがPATHで見つけられないコマンドを入力します。
Linuxにcommand-not-foundをインストールするための「apt」パッケージがあるようです。 Debian linuxの場合、これは次の場所でカタログ化されています。