Sublime text3和virtualenvs

时间:2014-07-25 19:18:41

标签: python sublimetext3 virtualenvwrapper

我对sublime3全新,但我无法找到对我的问题有帮助的东西...

我有不同的virtualenvs(使用virtualenwrapper制作),我希望能够指定每个项目使用哪个venv

由于我使用SublimeREPL插件进行自定义构建,我如何指定构建项目的python安装?

例如,当我在项目A上工作时,我想用venvA的python运行脚本,当我在项目B上工作时,我想用venvB运行(使用不同的构建脚本)

抱歉,我可怕的英语......

5 个答案:

答案 0 :(得分:49)

希望这是你想象的路线。我试图简化我的解决方案并删除一些你可能不需要的东西。

这种方法的优点是:

  • 单按按钮启动SublimeREPL并使用正确的解释器在其中运行文件(如果需要)。
  • 设置解释器后,在项目之间切换时不需要进行任何更改或额外步骤。
  • 可以轻松扩展为自动获取项目特定的环境变量,所需的工作目录,运行测试,打开Django shell等。

如果您有任何问题,或者我完全错过了您想要做的事情,请告诉我。

设置Project的Python解释器

  1. 打开我们的项目文件进行编辑:

    Project -> Edit Project
    
  2. 在项目的设置中添加一个新键,指向所需的virtualenv:

    "settings": {
        "python_interpreter": "/home/user/.virtualenvs/example/bin/python"
    }
    
  3. Anaconda等插件也会使用"python_interpreter"项目设置键。

    创建插件以获取此设置并启动SublimeREPL

    1. 浏览到Sublime Text的Packages目录:

      Preferences -> Browse Packages...
      
    2. 为我们的插件创建一个新的python文件,例如:project_venv_repls.py

    3. 将以下python代码复制到这个新文件中:

      import sublime_plugin
      
      
      class ProjectVenvReplCommand(sublime_plugin.TextCommand):
          """
          Starts a SublimeREPL, attempting to use project's specified
          python interpreter.
          """
      
          def run(self, edit, open_file='$file'):
              """Called on project_venv_repl command"""
              cmd_list = [self.get_project_interpreter(), '-i', '-u']
      
              if open_file:
                  cmd_list.append(open_file)
      
              self.repl_open(cmd_list=cmd_list)
      
          def get_project_interpreter(self):
              """Return the project's specified python interpreter, if any"""
              settings = self.view.settings()
              return settings.get('python_interpreter', '/usr/bin/python')
      
          def repl_open(self, cmd_list):
              """Open a SublimeREPL using provided commands"""
              self.view.window().run_command(
                  'repl_open', {
                      'encoding': 'utf8',
                      'type': 'subprocess',
                      'cmd': cmd_list,
                      'cwd': '$file_path',
                      'syntax': 'Packages/Python/Python.tmLanguage'
                  }
              )
      
    4. 设置热键

      1. 打开用户密钥绑定文件:

        Preferences -> Key Bindings - User
        
      2. 添加一些键绑定以使用该插件。一些例子:

        // Runs currently open file in repl
        {
            "keys": ["f5"],
            "command": "project_venv_repl"
        },
        // Runs repl without any file
        {
            "keys": ["f6"],
            "command": "project_venv_repl",
            "args": {
                "open_file": null
            }
        },
        // Runs a specific file in repl, change main.py to desired file
        {
            "keys": ["f7"],
            "command": "project_venv_repl",
            "args": {
                "open_file": "/home/user/example/main.py"
            }
        }
        

答案 1 :(得分:19)

有一个名为Virtualenv的sublime text3包,允许您使用virtualenv中的Python进行构建。

它支持virtualenv中的任何Python版本,对我来说效果很好(MacOS)。

要安装它,我们只需命令 + Shift + P 来调出pacakge控件(如果你没有安装它,请安装它) (还有),然后输入install。接下来输入virtualenv,当您看到它时,单击 return 进行安装。

安装后,选择Tools - > Build System - > Python + Virtualenv。然后你可以使用 command + B 来执行你的Python项目。

点击Here查看更多信息。

答案 2 :(得分:4)

您正在寻找自定义构建系统。

在菜单栏中,点击Tools -> Build Systems -> New Build System...

填写它提供的模板,并将其保存在以.sublime-build结尾的任何文件名下保存到User文件夹。

以下是制作自定义构建系统的文档:

http://docs.sublimetext.info/en/latest/reference/build_systems.html

我建议为python脚本创建一个自定义构建系统,然后为您想要的每个虚拟环境添加变体。 (见变体http://docs.sublimetext.info/en/latest/reference/build_systems.html#variants

您构建一个构建系统,可以从

切换它们
Tools -> Build Systems

(如果没有自动检测到)并使用命令调色板(默认ctrl + shift p)在变体之间切换。

唯一的“gotcha”是"cmd"参数来描述要运行的命令。默认情况下,它会将一个字符串数组作为命令运行,但您可以使用"shell_cmd"来代替使用通过命令行运行它的字符串。

答案 3 :(得分:2)

我有另一种选择。只需创建一个新的“构建系统”,就像在虚拟环境中一样运行。这里我们称之为'my_python'。目的是使用此构建系统直接运行我的脚本而不离开崇高。你需要:

  1. 首先,preferences->Browse Packages。这将打开一个文件夹,其中包含设置文件。转到目录User并创建一个名为my_python.sublime-build的新文件(由构建系统名称后跟.sublime_build组成。)执行此操作后,转到Tools -> Build System,您将看到新选项my_python
  2. 将以下JSON设置添加到该文件。

    {
        "shell_cmd": "/Users/Ted/bsd/vector/.v_venv/bin/python -u \"$file\"",
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
        "selector": "source.python"
    }
    

    shell_cmd内,将/Users/Ted/bsd/vector/.v_venv/bin/python更改为您的python虚拟环境的路径。

  3. 然后只需使用快捷键来构建脚本。

  4. 如果要更改虚拟环境,只需将其路径复制到设置文件即可。也许这种方法似乎包含了大量工作,但它运作良好且方便。

答案 4 :(得分:0)

我是 Python、pipenv,尤其是 Sublime Text 3 的超级新手。找不到让我开始在 Windows 10 上使用 pipenv 虚拟环境和 sublime 的简单解决方案。

这对于没有太多系统经验的人来说非常有效。

我的设置:

 Windows 10 Pro
 Python 3.9
 Sublime Text 3
 Dedicated directory for Python virtual environment 'C:Users\username\VirtualEnvs`
 
  1. 在专用目录中使用 pipenv 创建虚拟环境:pipenv install BestPythonPackage
  2. 从专用目录运行:pipenv shell
  3. 获取虚拟环境路径;在 shell 中运行时:pipenv --venv
  4. 在 sublime 中打开文件夹
  5. 创建新项目:Project > Save Project As > "New Project Name"
  6. 从左栏中的文件列表中选择 "New Project Name".sublime-project
  7. 用以下内容替换该文件的内容并保存。该路径是您在运行 'pipenv --venv' 时发现的
{
    "folders":
    [
        {
            "path": "C:\\Users\\username\\.virtualenvs\\PythonEnvs-uKL8m4_g",           
        },
    ],
    
    "build_systems": [
      {
      "name": "PYTHON_PIPENV",
      "cmd": ["python", "$file"],     
      }
    ], 
}
  1. 观察专用文件夹的 sublime 文件夹名称已更改为虚拟环境的名称。

  2. 从文件夹创建一个“hello.py”程序。

  3. 使用列表中的 Tools > Build System > "PYTHON_PIPENV" 构建系统构建程序。

当然,这里需要注意的是,您需要为任何新的虚拟环境执行此操作。提供的一些其他解决方案将动态更新。那些是/现在在我的头上。这是一个简单的解决方案。

'folders' 部分告诉 sublime 要查看的目录 'build_systems' 为新配置命名,并告诉 sublime 在你打开的任何文件上运行 'python'。