2013-03-15 9 views
6

私はPython 2.7を自分のシステムのデフォルトのPythonに設定するのに苦労しています。Mac OS XでPythonが自動的にエイリアスされているLion

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

ある時点で、私はパッケージマネージャー(MacPorts/Fink/Homebrew)を試してみることを勧められましたが、それは悪い考えでした。

全体的な問題は、どこかで、何とか、私のシェルが起動するたびにPython 2.6がデフォルトのPythonとしてオートエイリアスになっているということです。私は自分の.profileと.bashrcを見てきました。そしてそれらをエイリアスできるコマンドはありません。

また、私のデフォルトのパスは/Library/Frameworks/Python.framework/Versions/2.7/binになるように設定しました。私もこのSO postとこのSU postの提案を無駄にしてみました。 argparseなどに依存するスクリプトがあるので、デフォルトとして2.7を使用する必要があります。

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

+0

注: 'virtualenv'の使用を検討しましたか?あなたが望む多くの仮想環境を、あなたが望むようなPythonインストール(Appleやその他のもの)の周りに設定して、いつでも有効にしたいものを明示的に選ぶことができます。 – abarnert

+0

私は真剣にそれを検討し始めています。 – espais

+0

'virtualenv'は本当にクールです。 3.3の標準ライブラリに追加された理由があります。環境に注意を払わなければならない状況になったら(実際には、システムのデフォルトのPython 2.xを使用していない場合、特に、同じ2.xバージョンの別のコピーをインストールする場合あなたは既に持っていました)、明示的かつ容易にそうすることもできます。 – abarnert

答えて

5

私は私の上のデフォルトのPythonするのPython 2.7の設定で苦労されていますシステム。

すでにありました。 Lionボックスをクリアしてシェルにpythonと入力すると、/usr/bin/pythonというPython 2.7.2が実行されます。

のPython 2.6は、私のOS

ライオンに付属の2.5、2.6、2.7、および隠し2.3が付属しています。

/System/Library/Frameworks/Python.framework/Versionsにインストールされています。 2.3を除いてsymflink /usr/bin/python2.xは、その名前のPATHの最初のものであるため、python2.6と入力すると2.6が実行され、python2.7は2.7が実行されます。

/usr/bin/pythonにはデフォルトで2.7が実行される特別なラッパーがありますが、VERSIONER_PYTHON_VERSIONまたはcom.apple.versioner.pythonのプリファレンスで設定することができます。

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

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

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

"フレームワークビルド"(必要なもの)をインストールした場合、PATHの上部に置くことができるディレクトリ/Library/Frameworks/Python.framework/Versions/2.7/binがあります。これにより、/ usr/localと/ usrの順番に影響することがなくなり、Python setup.pyインストールでインストールされたスクリプトを、/ usr/local/binにシンボリックリンクせずに使用できるようになります。

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

あなたは、フレームワークのビルドをインストールしていないか、とにかく/usr/local/binにスクリプトをインストールするには、それを構成した、またはあなたがが、/ usr /ローカルの順序に影響を与えるようにしたい、ちょうどあなたの一番上に/usr/local/binを置く場合パス。何とか

、Pythonの2.6は私のシェルは自動エイリアスでは

を起動するたびに私のデフォルトのPythonなどの自動エイリアスが設定されて、あなたはbashのaliasがあります意味ですか?あなたと同じようにaliasと入力すれば、pythonなどのリストが得られますか?

もしそうなら、これを修正する必要があります。その上に別のハックを重ねて、それが何らかの影響を取り消さないようにしてください。

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

さらに、私は/ usr/binに/ Pythonは

これは、私はあなたがエイリアシングとシンボリックリンクを混乱していると思わせる、何にエイリアスされていません。彼らは同じことではありません。どちらが問題ですか?あなたはそれを修正する前に何が間違っているかを知る必要があります。

ので、これを試してください:あなたのPATHは、あなたはそれが言うことであれば

which python 

それは/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonをする必要があります。そうでなければ、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が必要な場合や、スタンドアロンのpy2appバンドルをビルドする必要がある場合(特に古いOS Xとの互換性が必要な場合)、またはsudoにアレルギーがあり、ワイドなファイルが世界的に書かれているか、何か他の理由でAppleのものを使用することはできません。python.orgやHomebrewからインストールしてください。

+0

実際に、/ etcのエイリアスを探しているあなたのコメントは、2.6エイリアスを自動的に追加していた/ etc/profileがありました。それが取り除かれてしまえば、すべてが元に戻り始めた...ありがとう! – espais

+3

エイリアスがどこから来たのかを知りたいかもしれません。なぜなら、背中の背後で起きることは非常に奇妙なことです。インストーラが実行した場合や何かがそれをした場合、それは他の悪い事をしたかもしれません... – abarnert

関連する問題