6

システムのデフォルトの Python を Python 2.7 に設定するのに苦労しています。

Python 2.6 は私の OS に付属しており、それ以来 (ソースから) 2.7 をインストールし、それをデフォルト バージョンにしようとしています。

ある時点で、パッケージ マネージャー (MacPorts / Fink / Homebrew) を試すように提案され、実行しましたが、それは悪い考えだったのではないかと思います。

全体的な問題は、どこかで、どういうわけか、シェルが起動するたびに Python 2.6 がデフォルトの python として自動エイリアス化されることです。.profile と .bashrc を調べましたが、エイリアスを作成できるコマンドはありません。

また、最初に確認するデフォルト パスを設定しました/Library/Frameworks/Python.framework/Versions/2.7/binまた、このSO の投稿とこのSU の投稿の提案を試してみましたが、役に立ちませんでした。argparse などに依存するスクリプトがあるため、デフォルトとして 2.7 を使用する必要があります。

さらに、私の /usr/bin/python は何にもエイリアスされておらず、 /usr/local/bin は次のとおりです。/usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

4

1 に答える 1

5

Python2.7をシステムのデフォルトのPythonに設定するのに苦労しています。

すでにそうでした。クリアなLionボックスを取得pythonし、シェルに入力すると、 /usr/bin/pythonPython2.7.2であるが実行されます。

Python2.6は私のOSに付属しています

Lionには、2.5、2.6、2.7、および非表示の2.3が付属しています。

それらはにインストールされてい/System/Library/Frameworks/Python.framework/Versionsます。2.3を除くすべてにシンボリックリンク/usr/bin/python2.xがあり、クリーンなシステムでは、その名前のPATHで最初に使用されるため、入力python2.6するだけで2.6python2.7が実行され、2.7が実行されます。

また、デフォルトで2.7を実行する特別なラッパーもありますが、または/usr/bin/python設定で構成できます。VERSIONER_PYTHON_VERSIONcom.apple.versioner.python

それ以来、2.7(ソースから)をインストールし、それをデフォルトバージョンにしようとしています。

「デフォルトバージョン」とはどういう意味ですか?python新しいターミナルシェルを入力したときに実行されるものにしたいですか、それとも#!/usr/bin/env pythonスクリプトのシバン行として使用したいですか?

これを行う最も簡単な方法は、インストールしたディレクトリを/ usr/binよりもPATHの上位に配置することです。

「フレームワークビルド」(必要なもの)をインストールした場合は/Library/Frameworks/Python.framework/Versions/2.7/bin、PATHの先頭に配置できるディレクトリがあります。これにより、/ usr /localと/usrの順序に影響を与えることが回避され、Pythonsetup.pyインストールによってインストールされるスクリプトを/usr / local/binにシンボリックリンクすることなく使用できるようになります。

これは重要です。AppleのPythonはスクリプトを/usr/ local / binにインストールします。たとえば、カスタムビルドのPythonの場合は/usr/local/bin/pip-2.7pip`を/usr/bin/easy_install-2.7 pip取得/usr/local/bin/pipします。. If you also install同じ場所に表示したくない。それ以外の場合は、最後にインストールした方がもう一方を置き換えます。

フレームワークビルドをインストールしなかった場合、またはスクリプトをインストールするように構成した場合/usr/local/bin、または/ usr / localの順序に影響を与えたい/usr/local/bin場合は、PATHの先頭に配置してください。

どういうわけか、Python 2.6は、シェルが起動するたびにデフォルトのpythonとして自動エイリアスされます

自動エイリアスとは、bashがあるという意味aliasですか?あなたがタイプするのと同じようにalias、それはあなたに以下を含むもののリストを与えますpythonか?

もしそうなら、あなたはこれを修正する必要があります、それが持っているどんな効果も元に戻すためにそれの上に別のハックを積み重ねようとしないでください。

にエイリアスコマンドがない場合は~/.*、を調べてください/etc/。もしそうならgrep -r alias /etc、それはあなたに物事の大きなリストを与えるでしょう、そしてあなたはメールエイリアスとapacheエイリアス(そしておそらくstderrへの出力を拒否されたいくつかの許可)をスキップする必要があります、しかしその後、シェルエイリアスはないはずです。

さらに、私の/ usr / bin/pythonは何にもエイリアスされていません。

これにより、エイリアシングとシンボリックリンクを混同していると思います。それらは同じものではありません。どちらが問題ですか?修正する前に、何が問題なのかを知る必要があります。

だから、これを試してみてください:

which python

/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonあなたのPATHがあなたが言う通りであるかどうかはそうあるべきです。そうでない場合は、PATHを正しく設定していないのでecho $PATH、を参照してください。

もしそうならそれからls -l /Library/Frameworks/Python.framework/Versions/2.7/bin/python。他のディレクトリの何かへのシンボリックリンクではなく、python2.7またはへのシンボリックリンクである必要があります。./python2.7そうでない場合、インストールは壊れています。最善の方法は、Pythonをアンインストールして適切に再インストールすることです。または、再インストールせずに、Appleを使用してください。または、2.7.2ではなく2.7.3が実際に必要な場合、スタンドアロンバンドルを構築する必要がある場合(特に古いOS Xとの互換性が必要な場合)、またはシステム全体のファイルにpy2appアレルギーがあり、それを好む場合sudo誰でも書き込み可能であるか、または他の理由でAppleを使用できない場合は、自分で実行するのではなく、python.orgまたはHomebrewからインストールしてください。

于 2013-03-15T18:54:54.110 に答える