wake-up-neo.com

Erhabener Text 2: benutzerdefinierte PATH und PYTHONPATH

Ich verwende ein Brew, das python (2.7.2) in/usr/local/bin/installiert. Das Standardsystem ist jedoch python (2.7.1) wird stattdessen bei /usr/bin/ ausgeführt, was anscheinend darauf zurückzuführen ist, dass keine der Umgebungsvariablen von bash PATH beachtet wird. Außerdem können meine Module nicht gefunden werden, da sie bei /usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages installiert sind. .

Ich habe Folgendes mit Python.sublime-settings Versucht, aber es funktioniert nicht:

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

Wie kann ich Sublime Text veranlassen, diese Umgebungsvariablen zu befolgen?

47
FLX

env muss ein JSON-Objekt oder ein Dictionary sein, wenn Sie so wollen:

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

Ich habe es erreicht, indem ich meine Pfade systemweit festgelegt habe, indem ich Folgendes ausgeführt habe:

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

Bearbeiten: Verdammt, das funktioniert nicht für Python, nur für PYTHONPATH, wenn ich es versuche, gibt es immer noch die falsche Python. Code zum Überprüfen des binären Speicherorts von python:

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

Edit2: Dies wurde behoben, indem eine Verknüpfung nach rechts hergestellt wurde python binary in Python.sublime-build:

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

Edit 3:

Das Debuggen von Problemen mit PYTHONPATH-Variablen kann vereinfacht werden, indem auch os.environ am oberen Rand Ihres Skripts. Sublime Text 2 Variablennamen funktionieren anscheinend NICHT für 'env'.

14
FLX

Es tut uns leid, einen alten Post zu stoßen, aber wenn Leute auf dieser Seite landen, die nach einer Möglichkeit suchen, sublime2 zu machen, verwenden Sie einen benutzerdefinierten $ PATH, sodass Plugins (z. B. ein Shell-Plugin) Ihren aktuellen System-$ PATH verwenden. Das hat bei mir funktioniert:

Erstellen Sie eine Datei (Plugin):

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

Dann fügen Sie diesen Code ein in:

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

Poste hier mit dem Originalcode ..

Dieses Plugin wird geladen, wenn Sie Sublime Text 2 starten. Ich habe es persönlich verwendet, um Shell-Befehle wie vom Terminal aus auszuführen und einige Plugins zu reparieren, die aufgrund einer schlechten Pfadvariablen nicht geladen wurden.

9
Ultriix