【问题标题】:Using virtualenv with sublime text 2使用带有 sublime text 2 的 virtualenv
【发布时间】:2012-08-11 12:51:54
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 两者都有,但我打算更多地使用 OS X!
  • 哈哈...“两者”。不是很有帮助。

标签: python virtualenv sublimetext2


【解决方案1】:

您还可以将构建系统的路径设置为您的 virtualenv 的 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)从 virtualenv 中找到正确的 python 二进制文件。

【讨论】:

  • 刚刚给了你+1,但想指出“名称”仅在变体中有效。参考:[sublime-text-2-docs][st2] [st2]:sublime-text-unofficial-documentation.readthedocs.org/en/…
  • @user: 我需要在ST哪里添加这个文件?
  • @user1050619:来自st 3 docs构建系统必须位于 Packages 文件夹下的某个位置(例如 Packages/User)。许多包都包含它们自己的构建系统。 Packages 文件夹位于~/Library/Application Support/Sublime Text 3/,在我的 Mac 上带有 ST 3。
【解决方案2】:

在 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 的回答,它提醒用户通过在“工具”>“构建系统”下选择它来激活新的构建系统!
【解决方案3】:

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

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

{

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

}

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 我用. venv/bin/activate; python file.py 谢谢!
    【解决方案5】:

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

    你不仅需要制作一个像这样的构建系统:

    "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 不会使用你的构建系统!!

    【讨论】:

      【解决方案6】:

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

      请注意,“cmd”现在在 ST3 中是“shell_cmd”。见ST3 blog

      【讨论】:

      • 这是唯一适合我的解决方案,运行 ST3 + Ubuntu 13.10,virtualenvs 隐藏在我的主文件夹中
      【解决方案7】:

      在 MAC OSX 下,这对我有用

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

      我所做的只是保持简单:

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

      sudo mkdir python
      

      然后进去创建虚拟环境

      virtualenv --no-site-packages virtualenvname
      

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

      【讨论】:

        【解决方案8】:

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

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

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

        【讨论】:

          【解决方案9】:

          我用它来构建我的 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

          【讨论】:

            【解决方案10】:

            这种组合效果很好:2 步

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

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

            【讨论】:

              【解决方案11】:

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

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

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

              【讨论】:

                【解决方案12】:

                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
                

                }

                【讨论】:

                  【解决方案13】:

                  这对我有用:

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

                  【讨论】:

                    【解决方案14】:

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

                    1. Sublime > 项目 > 将项目另存为...(如果您还没有。这将允许您为项目设置自定义构建选项
                    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 测试的。

                    【讨论】:

                      【解决方案15】:

                      请注意此解决方案不正确。

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

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

                      【讨论】:

                      • 我怀疑它是否会起作用,这是一本包含 2 个“cmd”条目的字典。第二个“cmd”将简单地覆盖第一个。
                      • 但我认为,如果您删除第一个“cmd”并将第二个“cmd”中的“python”替换为 virtualenv 的 python 二进制文件的路径,它将起作用。 IIRC,直接调用 virtualenv 的 python 和先激活 virtualenv 一样。
                      • 通过将第一个cmd 更改为"env": {"PYTHONPATH": "/path/to/your/virtualenv/bin/activate"},,你能得到什么吗?
                      • 这不起作用,我不明白这怎么可能被标记为正确。 “source”命令是内置命令,而不是二进制文件,因此在 PATH 中找不到它,因此执行时会出现“File not found error”。可能 PYTHONPATH 和 evn 的混合会有所帮助,但我仍在尝试这样做。
                      猜你喜欢
                      • 2016-05-20
                      • 2014-09-17
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-07-29
                      • 2014-06-09
                      相关资源
                      最近更新 更多