【问题标题】:Sublime Text 2: custom PATH and PYTHONPATHSublime Text 2:自定义 PATH 和 PYTHONPATH
【发布时间】:2012-01-24 09:14:55
【问题描述】:

我正在使用 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"
}

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

【问题讨论】:

标签: environment-variables development-environment sublimetext


【解决方案1】:

我通过执行以下操作在系统范围内设置路径得到它:

## 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。用于检查python二进制位置的代码:

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

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

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

编辑 3:

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

【讨论】:

  • 我现在在 .bash_profile 中添加了 PYTHON,包括您的 launchctl 命令和 Environment.plist 文件,但 TM2 和 ST2 仍然找不到我的 PYTHONPATH。我想把我的头发扯下来...... :(
  • Edit2 有效,您也可以将 PYTHONPATH 放入“env”字典下,就像在 Bo 的回答中一样,即在最后一个 } 之前添加一个逗号和一个新行 "env":{"PYTHONPATH": "/whatever/your/pythonpath/is"} 跨度>
  • 尝试了所有这些,仍然得到NameError: name 'python' is not defined
【解决方案2】:

env 需要是 JSON 对象或字典,如果你愿意,像这样:

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

【讨论】:

  • 谢谢,这帮助我理解了格式。我能够像这样修复我的 JAVA_HOME 错误:"env":{"JAVA_HOME":"$(/usr/libexec/java_home)"}
【解决方案3】:

很抱歉打了一个旧帖子,但是如果人们登陆此页面寻找一种方法来使 sublime2 使用自定义 $PATH 以便插件(例如 shell 插件)使用您当前的系统 $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']

Post with the original code here..

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

【讨论】:

  • 这会在 Sublime 的控制台中打印正确的 PATH,但它仍然找不到像 pythoncoffee 这样的任何命令。仍然出现NameError: name 'python' is not defined 之类的错误
  • 最后一行的字符串值应该有括号,否则可能会出现语法错误: print ('PATH = ' + os.environ['PATH'])
  • @NeilMonroe -- 我遇到了类似的问题,但我相信这是因为我使用的是 sublimetext 3 -- 它使用 python 3,其中 print 是一个函数,因此需要括号。跨度>
【解决方案4】:

这是一篇超级旧的帖子,但我来到这里寻找 Sublime Text 3 的解决方案。以防万一人们也来到这里,快速解决方案是进入 Preferences.sublime-settings 并添加:

"additional_path_items": [
    "/path/to/add/1",
    "/path/to/add/2",
],

【讨论】:

    猜你喜欢
    • 2013-02-19
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多