Sublime Text 2: пользовательские PATH и PYTHONPATH

Я использую brew, который устанавливает python (2.7.2) в /usr/local/bin/ Тем не менее, системный 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 подчиняться этим переменным среды?

Ответ 1

env должен быть объектом JSON или словарем, если вы это сделаете:

"env":
{
    "PYTHONPATH":"/usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages"
},

Ответ 2

Я получил его, установив свои пути по всей системе, выполнив следующие действия:

## 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:

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 в верхней части вашего script. Значения переменных Sublime Text 2, по-видимому, НЕ работают для 'env'.

Ответ 3

Извините, что ударил старый пост, но если люди приземляются на этой странице и ищут способ сделать 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 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, я лично использовал его для запуска команд оболочки, таких как я бы с терминала, и для исправления нескольких плагинов, которые не загружали из-за неправильной переменной пути.