26

我正在使用 sublime text 2 和 virtualenv 进行 python 开发!

标准的 sublime text 2 构建系统使用标准的 python 安装而不是我的安装包的 virtualenv。

如何使用我的 virtualenv 构建 sublime text 2?

我目前使用终端来激活我的环境并运行我的脚本。

更新:从来没有让它工作,但看到我正在使用烧瓶并且当你做出改变时它会构建,这不是一个大问题

4

15 回答 15

15

您还可以将构建系统的路径设置为binvirtualenv 的目录,如下所示:

"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示例中的)从 virtualenv 中找到正确的 python 二进制文件。

于 2013-01-07T10:53:26.677 回答
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"]
    }
]
于 2012-09-22T17:29:06.043 回答
12

Sublime 的构建系统支持可与 Sublime 项目文件一起使用的变量,以使其在项目之间更具可移植性。

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

{

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

}

然后它似乎会自动拾取其余部分 - 就像您从命令行键入 ./venv/bin/python 一样 - 无需弄乱路径、环境变量等。

于 2013-04-09T22:25:28.297 回答
3

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

{
    "cmd": ["source ~/projs/benicio/venv/bin/activate && python ~/projs/benicio/benicio_tests.py"],
    "shell": true
}
于 2013-09-13T00:26:46.123 回答
3

很抱歉为此添加另一个答案 - 但这让我非常难过。

您不仅需要制作一个构建系统,例如:

"build_systems":
[
{
    "name": "Maths",
    "env": {"PYTHONPATH":"/home/nebffa/Desktop"},
    "path":"$project_path/bin",
    "cmd": ["$project_path/bin/python3.3", "-u", "$file"]
}
]

但是您必须更改 Sublime Text 中的设置-转到工具->构建系统->“数学”。就我而言,我需要选择“数学”,因为这就是我命名我的构建系统的名称。如果你不这样做 - Sublime Text 不会使用你的构建系统!!

于 2013-10-10T12:45:50.377 回答
2

我刚刚获得了在 virtualenv 中工作的崇高文本 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"
}

请注意,“cmd”现在是 ST3 中的“shell_cmd”。见ST3 博客

于 2013-12-01T23:52:14.793 回答
1

在 MAC OSX 下,这对我有用

{
"cmd": ["/your/virtualenv/bin/python", "-u", "$file"]
}

我所做的是保持简单:

转到根驱动器并创建 python 文件夹:

sudo mkdir python

然后进去并创建了virtualenv

virtualenv --no-site-packages virtualenvname

然后使用上述命令在 ST2 中创建了一个新版本,它可以工作

于 2013-05-06T09:13:17.417 回答
1

这就是我作为构建系统所拥有的(假设我的 virtualenv 在我当前的项目目录中创建为一个名为“env”的文件夹)。这至少意味着我不需要在项目之间不断更改构建系统:

{
   "cmd": ["env/bin/python", "-u", "$file"]
}

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

于 2015-04-29T02:35:24.407 回答
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

于 2012-11-01T08:23:20.227 回答
0

这种组合效果很好:2 步

1) 将 2 个适当的键添加到“env”键。A) DJANGO_SETTINGS_MODULE B) PYTHONPATH

2)更新 cmd 以反映您要使用的 python 版本。

{

"env":{"DJANGO_SETTINGS_MODULE":"my_project.settings",
    "PYTHONPATH":"d:\\Projects\\virts\\my_project\\Scripts;d:\\Projects\\virts\\my_project\\Lib;d:\\Projects\\virts\\my_project\\Lib\\site-packages;D:\\Projects\\my_project"
    },
"cmd": ["c:/Python27/python.exe","$file"]
}
于 2012-12-31T14:48:52.490 回答
0

对于任何使用 Heroku 并使用他们的工头工具的人,我都有一个答案,而且效果很好。只需像这样创建一个新的构建系统:

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

这会引入 Foreman 可用的所有环境变量,包括您的 virtualenv 的 $PATH 变量,它将 virtualenv Python 添加到您的 Python 路径中。

于 2013-09-12T02:54:17.443 回答
0

source 在 lubuntu 上的构建中对我不起作用。采用 '。' 或点而不是“来源”。

这确实有效:

{

    "env": {
    "DJANGO_SETTINGS_MODULE":"django_project_name.settings",
    "PYTHONPATH":"/home/my_username/current/django_project_name:/home/my_username/.virtualenvs/django_project_name/lib/python2.7:/home/my_username/.virtualenvs/django_project_name/lib/python2.7/site-packages/"
},
"working_dir":"$project_path",
"cmd":[". /home/my_username/.virtualenvs/django_project_name/bin/activate && python $file"],
"shell":true

}

于 2014-02-17T22:43:50.637 回答
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"

选择

Tools> Build System> Python_env1

完毕!

使用 Windows 8.1,st2

于 2015-03-12T04:28:21.623 回答
0

假设您将项目特定的 virtualenv 保存在项目顶层的 .env 文件夹中。

  1. Sublime > Project > Save project as... (如果您还没有。这将允许您为项目设置自定义构建选项
  2. 项目 > 编辑项目:

    {
       "folders":[
           {
               "path": ".",
               "folder_exclude_patterns": [".env"],
           }
       ],
       "build_systems":[
           {
               "name": "Run in VirtualEnv",
               "shell_cmd": "source $project_path/.env/bin/activate && python -u $file"
           }
       ]
    }
    
  3. 工具 > 构建系统 > 在 VirtualEnv 中运行

  4. 工具 > 构建

请注意,这是使用 Sublime Text 3 测试的。

于 2017-11-21T10:27:52.957 回答
-4

请注意有关此解决方案不正确的评论。

您必须编辑您的sublime-project 文件并添加以下内容:

"build_systems":
[
    {
    "name": "Run Tests",
    "cmd": ["source", "/path/to/your/virtualenv/bin/activate"],
    "working_dir": "/path/to/to/you/django_project",
    "cmd": ["python", "manage.py", "test"]
    }
]
于 2012-08-15T16:24:10.470 回答