Snow LeopardでデフォルトのPythonバージョンを変更するにはどうすればよいですか?


27

最近、Mac OS X 10.5 Leopardのインストールを10.6 Snow Leopardにアップグレードし、それに伴ってPythonのアップグレードバージョン2.6.1(2.5.1の場合)が付属しました。今、私pythonはターミナルで入力すると、私はまだ得る

Python 2.5.1 (r251:54869, Apr 18 2007, 22:08:04) 
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

調べてみると/usr/bin/、Python 2.6を取得するには入力する必要があることがわかりましたpython2.6

問題はpythonコマンドをPython 2.6にマップするにはどうすればよいですか?

回答:


21

それは簡単です:

defaults write com.apple.versioner.python Version 2.6

man pythonAppleからの完全な説明を参照してください。

また、1つの落とし穴:コンピューターに付属しているPythonを実行していることを確認し、インストールした他のPythonを実行していないことを確認してください。これを行うにwhich pythonは、コマンドプロンプトで入力します。を指す必要があり/usr/bin/pythonます。Snow Leopardではデフォルトが2.6である(Leopardを使用していたときは2.5だった)ため、これについてのみ言及します。したがって、2.5を取得しているという事実は、パスに何か他のものがあることを示している可能性があります。

更新

以下のコメントに対処するには:

これは、人々が求めていることをしません。

OS X 10.8.2では、私にとってはそうです。実行後defaults write com.apple.versioner.python Version 2.6、Pythonのデフォルトバージョンは実際2.6です。(同様に2.7に戻した後。)

これはpython、直接実行する場合でも、次で始まる実行可能スクリプトを使用する場合でも当てはまります#!/usr/bin/env python。—Pythonの期待されるバージョンを取得します。

これは/System/Library/Frameworks/Python.framework/Versionsのシンボリックリンクを解決しません。現在の場所は問題を引き起こす可能性のある2.7を指します(2.6でsys.pathに残っているためです!)。

実際、このシンボリックリンクは修正されません。

しかし、短いスクリプトを実行しprint()sys.path(少なくとも私の比較的デフォルト設定で)とを2.6ライブラリのディレクトリがあるパス上に2.7 dirsにはないパスに。またCurrent、パス上のsymlinkedディレクトリもありません。そのため、ほとんどのスクリプトでは問題になりません。

しかし、それの可能-haven'tは、試験された、というCurrentシンボリックリンクがいずれかの方法で使用されていますeasy_installpip。それは問題を引き起こすでしょう。Pythonバージョンを更新してもシンボリックリンクが更新されないというバグのように見えます。


3
あなたは正しかった。私はずっと前にMacPythonをインストールしていましたが、それがPATH変数を台無しにしpythonました/Library/Frameworks/Python.framework/Versions/Current/bin。当然、それは2.6にアップグレードされませんでした。そこで、PATH変数をGoogleで見つけたデフォルトの変数に置き換え、システムからMacPythonを削除します。
SBSTN

@SBSTN同じ問題があります(Pythonパスが指す/Library/Frameworks/Python.framework/Versions/Current/bin)これを変更するにはどうすればよいですか?
ザック

/ Library / Frameworks / Python *はもうないので、Xcode4では動作しません。また/ usr / bin / pythonは他の場所を指しません。何か案は?MacPortsはソリューションになりますが、インストールしたくありません。
アレックス

Xcode 4をインストールしましたが、説明どおりに動作します。/usr/bin/pythonリンクではなく実行可能ファイルです。/usr/bin/python2.6はを指すリンクです../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6。Python実行可能ファイルが含まれ/System/Libraryている場合、Xcodeのバージョンがインストールされているかどうかに関係なく使用できるはずです。
ネイト

これは、人々が求めていることをしません。なぜ答えなのかはわかりません。
010110110101

12

Macポートを使用することをお勧めします...

pythonsを並行して使用できるpython_selectというパッケージがあります。したがって、まだインストールされていない場合は、まずMacポートをインストールします

最初にpython_selectパッケージをインストールします。

sudo port install python_select

システム上で利用可能なPythonディストリビューションを確認できます。コマンドを発行するだけです:

port select --list python     (MacPorts 2.x)
python_select -l              (MacPorts 1.x)

私の場合、Snow Leopardにデフォルトで付属している少なくともpythonバージョンを印刷しましたpython26-apple

port select --show python     (MacPorts 2.x)
python_select -s              (MacPorts 1.x)

現在選択されているバージョンを表示しますpython26-apple。ご覧のとおり、このパッケージはMacでうまく動作します。その他のオプションの問題について

port select                   (MacPorts 2.x)
python_select -h              (MacPorts 1.x)

portsリポジトリで利用可能なpythonバージョンを検索できるより:

port search python

これにより、利用可能なpythonの長いリストが作成されます。

目的のパッケージ、たとえばpython 2.4をインストールするには、次を実行します。

sudo port install python24

これで、python_select -s新しくインストールされたpythonも表示されます。Python 2.4の問題に切り替えるには:

sudo port select --set python python24  (MacPorts 2.x)
sudo python_select python24             (MacPorts 1.x)

このコマンドはシェル間で持続します。


5

bashを使用していると仮定して、次を入力します。

% type -a python

これにより、PATH内のすべての「python」実行可能ファイル、エイリアス、シェルビルトイン(おそらくなし)、またはbash関数が表示されます。

これは、ここで何が起こっているかをよりよく特定するのに役立ちます。


3

目的のバージョンへのシンボリックリンクを作成します。

cd /Library/Frameworks/Python.framework/Versions 
sudo rm Current 
sudo ln -s /Library/Frameworks/Python.framework/Versions/2.6 Current

これにより、デフォルトのPythonバージョンへの現在のポインターが削除され、2.6バージョンに設定されます。


1
これは私がやったことに似ています。しかし、代わりにリンクを/ usr / binに置き、「python」と呼びました(Appleがそこに置いた古い「python」実行可能ファイルをオーバーライドします)。だから:sudo ln -s /path/to/2.7 /usr/bin/python。これはLinuxで行われる方法であり、当然のことです。
NACHT

0

理想的ではありません(IMO)が、これpythonは私ので探しているすべてのアプリを修正しました/usr/local/bin/

sudo cp /usr/local/bin/python3 /usr/local/bin/python

もちろん、最新のPythonバージョンをインストールした後。


これは本当に悪い考えです。シンボリックリンクの使用は理解できますが、バイナリを前後にコピーすることはお勧めできません。
Jakuje

ターミナルでpythonと入力し、Python3.xを指すようにするだけです...これを適切に修正するには遅すぎません。
AGDM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.