Python Sublime text3和virtualenvs

Python Sublime text3和virtualenvs,python,sublimetext3,virtualenvwrapper,Python,Sublimetext3,Virtualenvwrapper,我有不同的virtualenv(使用virtualenwrapper制作),我希望能够指定每个项目使用哪个virtualenv 由于我正在使用submimerepl插件进行自定义构建,如何指定使用哪个python安装来构建我的项目 例如,当我在项目A上工作时,我想用venvA的python运行脚本,当我在项目B上工作时,我想用venvB(使用不同的构建脚本)运行脚本。您正在寻找自定义构建系统 从菜单栏中,单击Tools->Build Systems->New Build System… 填写它提

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

由于我正在使用
submimerepl
插件进行自定义构建,如何指定使用哪个python安装来构建我的项目


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

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

从菜单栏中,单击
Tools->Build Systems->New Build System…

填写它提供的模板,并将其保存在以
结尾的任何文件名下。升华构建
到您的
用户
文件夹中

以下是制作自定义生成系统的文档:

我建议为python脚本创建一个自定义构建系统,然后为您想要的每个虚拟环境添加变体。(参见变体)

一个构建系统,你可以从中切换

Tools -> Build Systems
(如果未自动检测到)并使用命令选项板(默认ctrl+shift p)在变量之间切换


唯一的“gotcha”是描述要运行的命令的
“cmd”
参数。默认情况下,它需要一个字符串数组作为命令运行,但您可以使用
“shell\u cmd”
来代替,只使用一个字符串,说明如何通过命令行运行它。

希望这是您所想象的。我试图简化我的解决方案,并删除一些您可能不需要的内容

这种方法的优点是:

  • 按一个按钮启动带有正确解释器的SublimeREPL,并在需要时运行其中的文件
  • 设置解释器后,在项目之间切换时不需要进行任何更改或额外的步骤
  • 可以很容易地扩展到自动获取特定于项目的环境变量、所需的工作目录、运行测试、打开Django shell等
如果你有任何问题,或者我完全没有注意到你想做什么,请告诉我

设置项目的Python解释器
  • 打开项目文件进行编辑:

     Project -> Edit Project
    
  • 将指向所需virtualenv的新键添加到项目设置中:

     "settings": {
         "python_interpreter": "/home/user/.virtualenvs/example/bin/python"
     }
    
  • 一个
    “python\u解释器”
    项目设置键也被类似的插件使用

    创建插件以获取此设置并启动SublimeREPL
  • 浏览至升华文本的
    软件包
    目录:

    Preferences -> Browse Packages...
    
  • 为我们的插件创建一个新的python文件,类似于:
    project\u venv\u repls.py

  • 将以下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'
                }
            )
    
  • 设置热键
  • 打开用户密钥绑定文件:

     Preferences -> Key Bindings - User
    
  • 添加一些键绑定以利用插件。一些例子:

  • //在repl中运行当前打开的文件
    {
    “键”:[“f5”],
    “命令”:“project\u venv\u repl”
    },
    //运行repl而不包含任何文件
    {
    “键”:[“f6”],
    “命令”:“project\u venv\u repl”,
    “args”:{
    “打开_文件”:空
    }
    },
    //在repl中运行特定文件,将main.py更改为所需文件
    {
    “键”:[“f7”],
    “命令”:“project\u venv\u repl”,
    “args”:{
    “打开文件”:“/home/user/example/main.py”
    }
    }
    
    有一个名为
    Virtualenv
    的sublime text3包,允许您从Virtualenv使用Python进行构建

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

    要安装它,我们只需命令+Shift+p调用pacakge控件(如果您还没有安装它),然后键入
    install
    。下一步键入
    virtualenv
    ,当您看到它出现时,单击“返回”安装它

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


    单击此处查看更多信息。

    我有其他选择。只是创建一个新的“构建系统”,就像在虚拟环境中运行一样。这里我们称之为“我的python”。目的是使用这个构建系统直接运行我的脚本,而无需离开sublime。您需要:

  • 首先,
    首选项->浏览软件包
    。这将打开放置设置文件的文件夹。进入dir
    User
    并创建一个名为
    my_python.sublime build
    (由构建系统名和
    .sublime_build
    )的新文件。完成此操作后,进入
    工具->构建系统
    ,您将看到一个新选项
    my_python
  • 将以下JSON设置添加到该文件中

    {
        "shell_cmd": "/Users/Ted/bsd/vector/.v_venv/bin/python -u \"$file\"",
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
        "selector": "source.python"
    }
    
    shell\u cmd
    中,将
    /Users/Ted/bsd/vector/.v\u venv/bin/python
    更改为python虚拟环境的路径

  • 然后使用短键构建脚本


  • 当您想更改虚拟环境时,只需将其路径复制到设置文件中,即可完成所有操作。也许该方法似乎包含了大量工作,但效果良好且方便。

    您能否指定“使用SublimeREPL插件进行自定义构建”的含义?我使用一种方法,通过项目的virtualenv自动打开并运行python脚本(在SublimeREPL中)只需按下一个按钮。我不确定这是否正是您想要的。如何将项目设置为在特定的virtualenv中运行?我知道没有内置的方式。我的方法包括为“python\U解释器”设置项目级设置,然后使用一个小的自定义插件来获取它,并用它运行sublimeREPL。如果你愿意,我可以在以后有时间的时候用完整的答案详细说明。是的,它会非常有用:)很好的帖子和很好的答案,但我无法让它工作。。。我已经在我的静脉中安装了烧瓶,只是为了试试你的scr