2011-08-04 6 views
10

私はpython_selectを使っていました。例えば、django-admin.py runserverのようなスクリプトを実行するためのデフォルトのPythonを変更していないようです。Macportsはスクリプトを実行するためのデフォルトのPythonインタプリタを選択しますか?

どうすれば変更できますか?

+1

これはスーパーユーザの方がいいかもしれないと思います... – thegrinner

+0

.pyファイルの '#!'の最初の行で上書きできる可能性があります。 –

+0

はい、それは実際には '#! 'で上書きできますが、OPの質問は特にデフォルトのPythonインタプリタに関するものです。 – fviktor

答えて

19

/usr/bin/pythonがあります。通常、MacPortのバイナリフォルダ(/opt/local/bin/python)よりもパスの方が早い(優先度が高い)。 python_selectスクリプトは/opt/local/bin/pythonしか変更されないため、パス上に他のpythonバイナリがないことを確認する必要があります。 (rootとして)

ソリューション:

mv /usr/bin/python /usr/bin/python.orig 
ln -s /opt/local/bin/python /usr/bin/python 
port select --set python python26 

があなたの意図したPythonのバージョンと3行目にpython26を置き換えることを確認してください。

MacPort 2.0.0で2,3日前に私の仕事をしてくれました。古いMacPortsライブラリをお持ちの場合は、アップグレードするか、port select --set pythonの代わりにpython_selectを使用してください。

+2

より簡単で安全なアプローチは、あなたのPATHの前に/ opt/local/binを置くことです。あなたはbashシェルで次の操作を行うことができたら、これを行うには : '' '輸出PATH =は/ opt/local/binに:$ PATH''' または編集〜/ .bash_profileのと最後に行を追加します。ファイルの システムのPythonを壊すように修正することはお勧めできません。システムのPythonを使用するMacのユーティリティやツールを壊す可能性があります。 編集:書式設定。 –

+0

@MickT:あなたが提案したことは、より良いアプローチだと思ったからです。 '/ opt/local/bin'が私の' PATH'変数の一番上にあることを確認できますが、 'which python'と入力すると'/usr/local/bin/python'で始まるリストが得られます。なぜ 'which'が' PATH'とは異なる順序を与えているのか? – jvriesem

+0

@jvriesem '' '/ usr/local/bin /' 'があなたのパスの先頭にある場合、' '/ usr/local/bin/python'''が最初に見つかるでしょう。私は何かを誤解していますか?もし私がいたら、以下の出力を投稿してください: echo $ PATH –

関連する問題