使用virtualenv和sublime text 2

26

我正在使用Sublime Text 2进行Python开发,并配合使用virtualenv。

标准的Sublime Text 2构建系统使用标准的Python安装程序,而不是我的虚拟环境,我的包都安装在虚拟环境中。

我该如何让Sublime Text 2使用我的虚拟环境来构建呢?

目前我是用终端激活我的虚拟环境并运行我的脚本。

更新:从未解决,但由于我使用Flask并且它可以在更改后重新构建,所以这不是一个大问题。


我两个都有,但我计划更多地使用OS X! - Rigobert Song
4
哈哈,“双方”不是很有帮助。 - Molomby
15个回答

15

您还可以将构建系统的路径设置为虚拟环境的 bin 目录,如下所示:

您还可以将构建系统的路径设置为虚拟环境的 bin 目录,如下所示:

"build_systems":
[
    {
        "selector": "source.python",
        "env": {"PYTHONPATH":"/Users/user/project"},
        "path":"/Users/user/work/myvirtualenv/bin:$PATH",
        "name": "Run virtualenv python",
        "cmd": ["python", "-u", "$file"],
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

        "variants": [
            {   "name": "Run all Tests",
                "working_dir": "/Users/user/project",
                "cmd": ["nosetests"]
            } 
        ]
    }
]

这还可以让其他工具(例如示例中的nose)从虚拟环境中找到正确的Python二进制文件。


刚刚给您点了个赞,但想指出,“name”仅在一个变量内有效。请参考:sublime-text-2-docs - Randy Skretka
@user:我需要在ST中的哪个位置添加这个文件? - user1050619
st 3文档生成系统必须位于Packages文件夹的某个位置下(例如Packages/User)。许多包含自己的构建系统。 Packages文件夹在我的Mac上的~/Library/Application Support/Sublime Text 3/中与ST 3一起存在。 - user1248490

13
在 Windows 上,这对我有效:
"build_systems":
[
    {
    "name": "Run Tests",
    "working_dir": "/path/to/to/your/django_project",
    "cmd": ["/path/to/your/virtualenv/bin/python.exe", "manage.py", "test"]
    }
]

请注意下面 @nebffa 的回答,提醒用户在“工具”>“构建系统”下选择新的构建系统以激活它! - thumbtackthief

12

Sublime的构建系统支持变量,可以与Sublime项目文件一起使用,使其在不同项目之间更加便携。

如果您的虚拟环境位于标准位置,请在项目的根目录中(即虚拟环境目录的上一级)创建一个新的项目文件(Project->Save Project As)。然后创建一个新的构建文件,内容如下:

{

    "cmd": ["$project_path/venv/bin/python", "-u", "$file"]

}

它似乎会自动接管其余部分 - 就像您从命令行键入./venv/bin/python一样 - 无需繁琐地处理路径、环境变量等。


3
抱歉又要再添加一个答案,但是这让我花费了很多时间才搞明白。不仅需要像这样创建一个构建系统:
"build_systems":
[
{
    "name": "Maths",
    "env": {"PYTHONPATH":"/home/nebffa/Desktop"},
    "path":"$project_path/bin",
    "cmd": ["$project_path/bin/python3.3", "-u", "$file"]
}
]

但你必须更改Sublime Text中的一个设置 - 转到工具 --> 构建系统 -->“Maths”。在我的情况下,我需要选择“Maths”,因为那是我命名的构建系统。如果您不这样做 - Sublime Text将不使用您的构建系统!


3

我正在使用Flask,但我认为它适用于几乎所有情况。
我的实际构建如下,其中“benicio”是我的项目目录:

{
    "cmd": ["source ~/projs/benicio/venv/bin/activate && python ~/projs/benicio/benicio_tests.py"],
    "shell": true
}

我使用. venv/bin/activate; python file.py。谢谢! - Steve Peak

2

我刚刚在虚拟环境中成功地使用了Sublime Text 3。尽管OP指定了ST2,但像我一样使用ST3的人可能更多。感谢user1248490和Russell Beattie,我得到了以下解决方案:

{
    "shell_cmd": "$project_path/vi_sys_pkgs/bin/python3 -u \"$file\"",
    "path": "$project_path/vi_sys_pkgs/bin",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

请注意,在ST3中,“cmd”现在改为“shell_cmd”。请参阅ST3博客。 ST3博客

1
这是我唯一的解决方案,适用于运行ST3 + Ubuntu 13.10的情况,我的虚拟环境被藏在我的主文件夹中。 - puredevotion

1
这是我作为构建系统的设置(假设我的虚拟环境被创建为当前项目目录中名为'env'的文件夹)。这至少意味着我不需要在项目之间不断更改构建系统。
{
   "cmd": ["env/bin/python", "-u", "$file"]
}

我将其保存为一个新的构建系统(工具 -> 构建系统 -> 新建构建系统)。


1
在MAC OSX下,这对我有效。
{
"cmd": ["/your/virtualenv/bin/python", "-u", "$file"]
}

我所做的是保持简单:前往根目录并创建Python文件夹。
sudo mkdir python

然后进入那里并创建了虚拟环境。
virtualenv --no-site-packages virtualenvname

然后使用上述命令在ST2中创建了一个新的构建,它可以正常工作。


0

这个对我有用:

{
    "cmd": ["C:/Users/user/virtualenvs/env1/Scripts/python.exe", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

保存构建在:

"C:\Users\user\AppData\Roaming\Sublime Text 2\Packages\User\"

作为

"Python_env1.sublime-build"

选择

工具>构建系统>Python_env1

完成!

使用Windows 8.1,ST2


0

我使用这个来构建我的Flask项目。我已经在我的项目设置中添加了以下代码: 项目 -> 编辑项目

{
     "folders":
     [
          {
               "path": "/C/MyDev/chilinzb/"
          }
     ],
     "build_systems":
    [
        {
            "name": "Flask",
            // activate the specific virtualenv for the project
            "cmd": ["C:/MyDev/virtualenvs/env_chilinzb/Scripts/python", "$file"]
        }
    ]
}

然后我只需切换到我的run.py文件并按下Ctrl+B


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接