web-dev-qa-db-ja.com

python3トレースバックエラー

Error:Command not foundを取得する代わりに、ターミナルでコマンドを誤って入力すると、次のようになりますpythonメッセージエラー

    Traceback (most recent call last):
  File "/usr/lib/python3.3/site.py", line 631, in <module>
    main()
  File "/usr/lib/python3.3/site.py", line 616, in main
    known_paths = addusersitepackages(known_paths)
  File "/usr/lib/python3.3/site.py", line 284, in addusersitepackages
    user_site = getusersitepackages()
  File "/usr/lib/python3.3/site.py", line 260, in getusersitepackages
    user_base = getuserbase() # this will also set USER_BASE
  File "/usr/lib/python3.3/site.py", line 250, in getuserbase
    USER_BASE = get_config_var('userbase')
  File "/usr/lib/python3.3/sysconfig.py", line 580, in get_config_var
    return get_config_vars().get(name)
  File "/usr/lib/python3.3/sysconfig.py", line 530, in get_config_vars
    _init_posix(_CONFIG_VARS)
  File "/usr/lib/python3.3/sysconfig.py", line 403, in _init_posix
    from _sysconfigdata import build_time_vars
  File "/usr/lib/python3.3/_sysconfigdata.py", line 6, in <module>
    from _sysconfigdata_m import *
ImportError: No module named '_sysconfigdata_m'

Python3.xをインストールしてデフォルトのインタープリターにしようとした後、このエラーがこのようになったことを知っています。

$ lsb_release -rd
Description:    Linux Mint 14 Nadia
Release:    14

/usr/lib/command-not-foundもうまく機能しています。
デフォルトのpythonバージョンに戻すことはできますか?単に実行しました

Sudo ln -sf /usr/bin/python2.7 /usr/local/bin/python

デフォルトのインタプリタとして2.7を取得するだけで十分ですか?
この地獄のメッセージエラーを取り除く方法はありますか?

3
wisdom

Ubuntuから派生したディストリビューションでデフォルトのPythonインタープリターを変更するのは悪い考えです。非常に多くのシステムユーティリティは、pythonが期待されるバージョンに解決されることを期待し、そうでない場合は非常に不幸になります。 。

(明らかにシェルに依存する)方が良いでしょう:

export PATH="${HOME}/bin:${PATH}"
ln -s /usr/bin/python2.7 $HOME/bin/python

それをyourデフォルトのインタプリタにしますが、システムユーティリティは期待どおりのままにします。

コメントへの返信として追加

これが機能しなかった理由についての私の最初の推測は、行った変更を完全にクリーンアップしなかったということです。

Sudo rm /usr/local/bin/python
Sudo apt-get install --reinstall python

ここで報告した変更をクリアし、ディストリビューションのデフォルトPythonインタープリターをシステム全体のデフォルトに戻す必要があります。

次に、上記で作成することを提案したユーザーエイリアスを削除します。

rm $HOME/bin/python

そして、シェルコマンドが見つからないときにPythonトレースバックがまだ得られるかどうかを確認します。それでもトレースバックが得られる場合、それを引き起こす標準的なメカニズムは考えられません。したがって、使用しているシェル(おそらくbash)に関する詳細情報を提供し、コマンドの出力を追加する必要があります

complete | grep python
alias | grep python
python -V

あなたの質問に。

1
msw

stackoverflow および launchpad で説明されているように、これは実際にはubuntuディストリビューションのバグです。

修正は、/etc/bash.bashrcファイルにパッチを適用し、行python /usr/lib/command-not-found -- $1usr/lib/command-not-found -- $1に変更することです。

0
ostrokach