46

Używam naparu, który instaluje python (2.7.2) w/usr/local/bin/ Jednak domyślny systemowy python (2.7.1) jest wykonywany zamiast tego pod /usr/bin/, co wydaje się być, ponieważ nie przestrzega żadnej ze zmiennych środowiskowych PATH bash. Nie można również znaleźć modułów, ponieważ są one zainstalowane pod adresem /usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages.Wysublimowany tekst 2: niestandardowa ŚCIEŻKA i PYTHONPATH

Próbowałem następujące z Python.sublime-settings, ale to nie działa:

{ 
"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" 
} 

Jak mogę dokonać Sublime Text przestrzegać tych zmiennych środowiskowych?

+1

nadal nie może sprawić, że zadziała, czy znalazłeś rozwiązanie w międzyczasie? –

+2

[dokumenty dla dalszych szczegółów na temat systemów kompilacji] (http://docs.sublimetext.info/en/latest/reference/build_systems.html) – gorlum0

+0

Dla ustawień kompilacji SublimeText3 sprawdź tę odpowiedź: http://stackoverflow.com/questions/23789410/how-to-edit-sublime-text3-build-settings – Moberg

Odpowiedz

14

mam go przez ustawienie mój system ścieżek szeroki wykonując następujące czynności:

## 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: Cholera, to nie działa dla Pythona, tylko dla PYTHONPATH, gdy próbuję go, to nadal daje zły python. Kod używany do sprawdzania Python binarny lokalizację:

import sys, os 
print os.path.dirname(sys.executable) 

Edit2: Poprawiono to przez hardlinking do prawej Pythona binarnego w Python.sublime-build:

{ 
    "cmd": ["/usr/local/bin/python", "-u", "$file"], 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "selector": "source.python" 
} 

Edycja 3:

debugowanie PYTHONPATH Zmienne problemy mogą być łatwiejsze przez drukowanie os.environ u góry skryptu. Nazwy zmiennych Sublime Text 2 najwyraźniej NIE działają dla "env".

+1

Dodałem PYTHON teraz do .bash_profile, łącznie z komendami launchctl oraz w pliku Environment.plist, ale STILL zarówno TM2, jak i ST2 nie mogą znaleźć mojej PYTHONPATH. Chcę wyrwać mi włosy ... :( –

+1

Edit2 działa, możesz również umieścić PYTHONPATH w słowniku "env", jak w odpowiedzi Bo'a, tj.dodaj przecinek i nowy wiersz "env": {"PYTHONPATH": "/ cokolwiek/twoja/pythonpath/is"} 'przed ostatnim'} ' – Markus

+0

Wypróbowałem to wszystko, wciąż otrzymuję python' NameError: name ' "nie jest zdefiniowane" – zakdances

62

env musi być obiekt JSON, lub słownika, jeśli będzie coś takiego:

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

Dzięki, pomogło mi to zrozumieć format. Naprawiłem błąd JAVA_HOME w ten sposób: "env": {"JAVA_HOME": "$ (/ usr/libexec/java_home)"} –

+5

Ta odpowiedź powinna być zaakceptowana –

9

Niestety zderzyć starego posta ale jeśli ludzie lądują na tej stronie szuka sposobu skorzystania sublime2 zwyczaj $ PATH tak wtyczek (np plugin shell) korzystania z obecnych systemów $ PATH ten pracował dla mnie:

Tworzenie pliku (wtyczki):

~/Library/Application Support/Sublime Text 2/Packages/User/Any_ol_name.py 

Następnie wklej ten kod:

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'] 

Post with the original code here..

Ta wtyczka będzie ładować podczas uruchamiania Sublime Text 2, I personnally używali go do wykonywania poleceń powłoki, jak bym z terminalu i naprawić kilka wtyczek jeździliśmy załadowaniem z powodu złej zmiennej PATH .

+0

To drukuje poprawną ścieżkę PATH w konsoli Sublime, ale nadal nie może znaleźć żadnych poleceń typu 'python' lub' coffee'. Nadal dostaję błędy takie jak 'NameError: name 'python' nie jest zdefiniowany' – zakdances

+0

Ostatni wiersz powinien mieć nawiasy wokół wartości ciągu lub może pojawić się błąd składniowy: print ('PATH =' + os.environ ['PATH']) –

+0

@NeilMonroe - Miałem podobny problem, ale uważam, że to dlatego, że używałem sublimetext 3 - który używa python 3, gdzie print jest funkcją, i tak potrzebuje parens. –