Sublime Text 2:自定义PATH和PYTHONPATH

FLX*_*FLX 47 development-environment environment-variables sublimetext

我正在使用brew在/ usr/local/bin /中安装python(2.7.2)但是,执行默认系统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"
}
Run Code Online (Sandbox Code Playgroud)

如何让Sublime Text服从这些环境变量?

Bo *_*sen 62

如果你愿意,env需要是一个JSON对象或字典,如下所示:

"env":
{
    "PYTHONPATH":"/usr/local/lib/python:/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages"
},
Run Code Online (Sandbox Code Playgroud)


FLX*_*FLX 14

我通过执行以下操作设置我的路径系统来获得它:

## 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
Run Code Online (Sandbox Code Playgroud)

编辑:该死,这对python不起作用,只是对于PYTHONPATH,当我尝试它时,它仍然给出了错误的python.用于检查python二进制位置的代码:

import sys, os
print os.path.dirname(sys.executable)
Run Code Online (Sandbox Code Playgroud)

Edit2:通过在Python.sublime-build中硬链接到正确的python二进制文件来解决这个问题:

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

编辑3:

通过os.environ在脚本顶部打印,可以更轻松地调试PYTHONPATH变量问题.Sublime Text 2变量名显然不适用于'env'.


小智 9

很抱歉碰到一个旧帖子但是如果有人登陆这个页面寻找一种方法来使sublime2使用自定义的$ PATH所以插件(例如一个shell插件)使用你当前的系统$ PATH这对我有用:

创建一个文件(插件):

~/Library/Application Support/Sublime Text 2/Packages/User/Any_ol_name.py
Run Code Online (Sandbox Code Playgroud)

然后将此代码粘贴到:

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']
Run Code Online (Sandbox Code Playgroud)

在这里发布原始代码..

这个插件将在你启动Sublime Text 2时加载,我个人用它来运行shell命令,就像我从终端那样运行并修复一些由于路径变量错误而没有加载的插件.