Возвышенный текст 2: пользовательские PATH и PYTHONPATH - PullRequest
47 голосов
/ 20 декабря 2011

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

Ответы [ 3 ]

62 голосов
/ 29 марта 2012

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

"env":
{
    "PYTHONPATH":"/usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages"
},
14 голосов
/ 20 декабря 2011

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

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

Edit: Черт, это не работает для 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'.

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

...