2012-02-02 12 views
2

私のシステムはRedHat 5 Linuxで、デフォルトのPython 2.4がインストールされています。 Mercurial1.81を実行するために、Pythonを2.4から2.6にアップグレードし、別のディレクトリに保存しようとしました。Mercurialを実行するとPythonのインポートエラーが発生する

は、ここで私が使用しているコマンドです:私はPythonとのpython2.6の間のリンクに使用ハードリンクを削除しようとしていた

find -xdev -samefile /usr/bin/python | xargs rm 

ln -s /usr/bin/python2.4 /usr/bin/python 
ln -s /usr/bin/python2.6 /usr/local/bin/python 
export PATH=/usr/local/bin:$PATH 
Change first line of hg to #!/usr/bin/env python 
PATHONHOME=/usr/lib/python2.6 
PATHONPATH=/usr/lib/python2.6 

次に「whereis python」と入力したときの結果を示します。私は "これのpython" と入力する場合、それは私が "のpython -V" と入力する "USR/binに/ pythonの" .Whenを指摘

python: /usr/bin/python2.4 
/usr/bin/python 
/usr/lib/python2.4 
/usr/lib/python2.6 
/usr/local/bin/python 
/usr/include/python2.4 
/usr/include/python2.6 
/usr/share/man/man1/python.1.gz 

はその後、それは "のpython 2.4.3" を示しました。 2.4.3を指しているようです。私は

python -c "import sys; print '\n' .join(sys.path)" 

コマンドを使用した場合、それは私はそれが

/usr/include/python2.6 
/usr/lib/python2.6 
/usr/lib64/python2.6 
を示し、 "/ -nameのpython2.6を見つける" と入力してのpython 2.6のパスを見つけることを試みた

/usr/lib64/python24.zip 
    /usr/lib64/python2.4 
    /usr/lib64/python2.4/plat-linux2 
    /usr/lib64/python2.4/lib-tk 
    /usr/lib64/python2.4/lib-dynload 
    /usr/lib64/python2.4/site-packages 
    /usr/lib64/python2.4/site-packages/Numeric 
    /usr/lib64/python2.4/site-packages/gtk-2.0 
    /usr/lib/python2.4/site-packages 

を示しました。

ここに私の質問があります:
(1)上のライナーの結果をpython2.6に置き換える方法を変更するにはどうしたらいいですか?
(2)/usr/bin/python2.6や/usr/local/bin/python2.6などのディレクトリが見つからないのはなぜですか? 私は自分のpython2.6を間違ってインストールしたか、間違ってディレクトリを削除してしまったのでしょうか?
私が入力したコマンドから得た結果について何か問題はありますか?
(3)「hg push」を使用したときに、システムにpython2.6を実行させる方法はありますか?
(4)/ usr/local/binにpython2.6を再度インストールする必要がありますか?

は、私はあなたのシステムを不安定化を回避するために戻って、システムのPythonの2.4から/usr/bin/pythonを変更することをお勧めしたい、非常に多くの

+2

python 2.6のインストール後に水銀を再インストールしましたか? – geoffspear

+0

水銀を最初に取り除いてからもう一度取り付ける必要がありますか?または、最初に何も削除せずに再インストールするだけでいいですか? – Cassie

答えて

1

、ありがとうございました。これを行うには、/usr/bin/python2.4にシンボリックリンクし、/usr/bin/python2.6にシンボリックリンク/usr/local/bin/pythonを追加します。

(それがそのためにはなっていない場合​​)を次にように、その後#!/usr/bin/env python/usr/bin/hgの最初の行を編集して、最初にローカルのpythonを見つけるためにあなたのシェルrcファイル(例えば〜/ .bashrcに)にあなたの経路を変更それはあなたのユーザセッション内でデフォルトで実行されます。

何か理由(2.6のPythonバイナリを実行しているときに2.4)で間違ったバージョンのPythonライブラリを読み込もうとしている場合は、Python実行ファイルがそのホームを見つけるために使用する検索パスを変更できますPYTHONHOME環境変数。

しかし、Python 2.6と互換性のない多くのPythonスクリプトがOSに組み込まれている可能性があるので、このシステム全体を変更しない方がよいでしょう。シェルrcファイルに追加してみてください。

PYTHONHOMEが実行しない理由があれば、PYTHONPATH環境変数(rcファイル内)を直接編集して、Python 2.6ライブラリパスを追加することができます。

python -c "import sys; print '\n'.join(sys.path)"の出力をミラーリングすることをお勧めします。

この1つのライナーは、Python 2.6を実行しているときには2.6のパスを表示するはずですが、まだ2.4のパスが表示されている場合、そのパスをPython 2.6の正しいパスに置き換えます同じ、「4」ではなく「6」のみ)

+0

私の小さなシステム知識を申し訳ありません。もっと説明できますか?
(1)Python2.6ライブラリパスをPYTHONPATHに追加するにはどうすればよいですか?私はコマンド "python -c" import sysを入力するだけでいいですか?/usr/bin/pythonをシステムの2.4に戻すにはどうすればいいですか?/usr/bin /ディレクトリにコマンド "rm python2.6"を使用しました。しかし、私が「python -V」と入力したとき、それはまだPython 2.6.5を示していました。私はそれを正しく変更していないということですか? (3)あなたの回答と同様に、 "usr/local/bin/python"をどこに追加すればよいですか?ありがとうございました – Cassie

+0

わかりやすくするために私の上記のメッセージを編集してください、申し訳ありません。 –

+0

こんにちは私はいくつかのステップを試して、私の質問を編集しました。あなたはその問題について考えていますか?ありがとうございました。 – Cassie

1

水銀のインストールは/usr/lib64/python2.4/site-packages/mercurialです。その特定のインストールにはPython 2.4が必要です。そして/usr/bin/hgの最初の行は、おそらくです:

#!/usr/bin/python 

あなたは公式のリポジトリからパッケージを使用していると仮定すると、Mercurialは正確にバージョン2.4であることをデフォルトのPythonに依存するであろう。だから、/usr/bin/pythonをつまむことは本当に良い考えではありません。それが本当にあなたを悩ませるなら、新しいPython 2.6にはeasy_installというものがあります。

+1

私はfayazに同意しますが、おそらく起こっていることは、インストールされた新しいバージョンの水銀が "水銀からのインポート"コマンドを使用していて、誤った(2.6の) 'PYTHONHOME '変数、それは(新しいスクリプトの視点から時代遅れです)2.4水銀ライブラリを見つけることです。 –

関連する問題