/ usr/local/bin /にpython(2.7.2)をインストールするbrewを使用していますが、デフォルトのシステムpython(2.7.1)代わりに/usr/bin/
で実行されますが、これはbash PATH環境変数のいずれにも従わないためと思われます。また、/usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages
にインストールされているため、私のモジュールも見つかりません。
Python.sublime-settings
で次のことを試しましたが、うまくいきません。
{
"path": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
"env": ["PYTHONPATH", "/usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages"],
"cmd": ["python", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
Sublime Textをこれらの環境変数に従うにはどうすればよいですか?
envは、次のようにJSONオブジェクトまたは辞書である必要があります:
"env":
{
"PYTHONPATH":"/usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages"
},
次の操作を行って、システム全体にパスを設定することでそれを実現しました。
## PATH
export PATH=/usr/local/bin:/usr/local/share/python:$PATH
## PYTHON
export PYTHONPATH=/usr/local/lib/python:$PYTHONPATH
# make systemwide
launchctl setenv PATH $PATH
launchctl setenv PYTHONPATH $PYTHONPATH
編集:くそー、これはpythonでは機能せず、PYTHONPATHでのみ機能します。試してみると、まだ間違ったpythonが表示されます。チェックするコードpythonバイナリの場所:
import sys, os
print os.path.dirname(sys.executable)
Edit2:右側にハードリンクすることでこれを修正しましたpython Python.sublime-buildのバイナリ:
{
"cmd": ["/usr/local/bin/python", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
編集3:
PYTHONPATH変数の問題のデバッグは、os.environ
スクリプトの上部。 Sublime Text 2の変数名は明らかに 'env'では機能しません。
古い投稿をバンプして申し訳ありませんが、sublime2がカスタム$ PATHを使用する方法を探している人がこのページにアクセスした場合、プラグイン(シェルプラグインなど)は現在のシステム$ PATHを使用します。
ファイル(プラグイン)を作成します。
~/Library/Application Support/Sublime Text 2/Packages/User/Any_ol_name.py
次に、このコードを次の場所に貼り付けます。
import os
# Tweak line below as needed for your $PATH
LOCAL = '/usr/local/bin:/usr/local/sbin'
# Sublime's default path is
# /usr/bin:/bin:/usr/sbin:/sbin
# it'll be prepended to your custom one
os.environ['PATH'] += ':'
os.environ['PATH'] += LOCAL
print 'PATH = ' + os.environ['PATH']
Sublime Text 2を起動すると、このプラグインが読み込まれます。ターミナルから行うようにシェルコマンドを実行し、不良なパス変数のために読み込まれなかったいくつかのプラグインを修正するために個人的に使用しました。