Ответ 1
env должен быть объектом JSON или словарем, если вы это сделаете:
"env":
{
"PYTHONPATH":"/usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages"
},
Я использую 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 подчиняться этим переменным среды?
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:
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'.
Извините, что ударил старый пост, но если люди приземляются на этой странице и ищут способ сделать 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, я лично использовал его для запуска команд оболочки, таких как я бы с терминала, и для исправления нескольких плагинов, которые не загружали из-за неправильной переменной пути.