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 подчиняться этим переменным среды?


person FLX    schedule 20.12.2011    source источник
comment
все еще не могу заставить это работать, вы нашли решение тем временем?   -  person K.-Michael Aye    schedule 28.03.2012
comment
Для настроек сборки SublimeText3 ознакомьтесь с этим ответом: stackoverflow.com/questions/23789410/   -  person Moberg    schedule 27.10.2014


Ответы (4)


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

"env":
{
    "PYTHONPATH":"/usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages"
},
person Bo Fjord Jensen    schedule 29.03.2012
comment
Спасибо, это помогло мне понять формат. Я смог исправить свою ошибку JAVA_HOME следующим образом: env:{JAVA_HOME:$(/usr/libexec/java_home)} - person Mikko Tapionlinna; 14.03.2013

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

## 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'.

person FLX    schedule 20.12.2011
comment
Теперь я добавил PYTHON в .bash_profile, включая ваши команды launchctl и в файл Environment.plist, но ВСЕ ЕЩЕ ни TM2, ни ST2 не могут найти мой PYTHONPATH. Я хочу рвать на себе волосы... :( - person K.-Michael Aye; 28.03.2012
comment
Edit2 работает, вы также можете поместить PYTHONPATH в словарь env, как в ответе Бо, т.е. добавить запятую и новую строку с чтением "env":{"PYTHONPATH": "/whatever/your/pythonpath/is"} перед последним } - person Markus; 27.06.2012
comment
Пробовал все это, все еще получаю NameError: name 'python' is not defined - person zakdances; 10.06.2013

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

person Ultriix    schedule 25.05.2013
comment
Это печатает правильный PATH в консоли Sublime, но по-прежнему не может найти такие команды, как python или coffee. По-прежнему возникают ошибки типа NameError: name 'python' is not defined - person zakdances; 10.06.2013
comment
В последней строке строковое значение должно быть заключено в круглые скобки, иначе вы можете получить синтаксическую ошибку: print ('PATH = ' + os.environ['PATH']) - person Neil Monroe; 29.10.2014
comment
@NeilMonroe - у меня была похожая проблема, но я считаю, что это потому, что я использовал sublimetext 3, который использует python 3, где print - это функция, и поэтому нужны скобки. - person Kem Mason; 15.11.2014

Это очень старый пост, но я попал сюда в поисках этого решения для Sublime Text 3. На всякий случай, если люди тоже попадут сюда, быстрое решение — перейти в Preferences.sublime-settings и добавьте:

"additional_path_items": [
    "/path/to/add/1",
    "/path/to/add/2",
],
person dave4jr    schedule 10.02.2020