Search code examples
pythonvirtualenvsublimetextsublimetext3sublimerepl

Using virtualenv with Sublime Text 3 and SublimeREPL


I'm trying to setup ST3 to work with Python's virtualenv, running on Windows 8.1. I usually use SublimeREPL with my global Python install to run files. Now that I'm using venvs, though, I'm having trouble getting anything to run. Here's what I've been trying:

I have a parent directory with a folder virtualenvs, then one scripts for my .py files that I muck around with. I usually just navigate to \virtualenvs\venv\scripts\activate and do my work using the python interpreter, but I'd like to be able to build the files without needing to go through command line stuff, using ST3 and SublimeREPL.

I made a build system that looks like this:

{
    "shell_cmd": ["\code\virtualenvs\venv\scripts\python.exe", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
}

But I'm not even sure if this is what I need to do to use SublimeREPL, as I've never had to worry about Tools > Build Systems before, just Tools > SublimeREPL > Python > Python - RUN current file.

How can I change the build system or customize SublimeREPL's RUN? For a test case, I have the requests module installed in the venv but not in my global python install. Importing it from command line works fine but a .py file with import requests returns an ImportError.


Solution

  • The ST3 build system and the SublimeREPL provide two different pieces of functionality. The build system is something you would typically use when working with a compiled language like C. It allows you to define how you want to build your program from the source files.

    You can also use the build system with Python. In this case, it would compile for you the file which is currently open.

    The SublimeREPL on the other hand, allows you to run a terminal session inside Sublime and also (among other things) evaluate the files within the context of that session. I would suggest you take a look at the documentation for SublimeREPL and Python:

    Both stock Python and Execnet integrations support virtualenv. Various ways to work with Python, including PDB and IPython, are supported.

    For virtualenv created environments to be discoverable by SublimeREPL they should be created or symlinked in one of the following:

    • ~/.virtualenvs default for virtualenvwrapper
    • ~/.venvs default for venv

    Alternatively, more paths can be added to “python_virtualenv_paths” in the SublimeREPL configuration file.