I have different virtualenv's (made with virtualenwrapper) and I'd like to be able to specify which virtualenv to use with each project.
Since I'm using the SublimeREPL plugin for custom builds, how can I specify which python installation to build my project with?
For example, when I work on project A I want to run scripts with venvA's python, and when I work on project B I want to run things with venvB (using a different build script).
Sublime Text is able to run build programs such as 'make', either when a key in pressed (F7 by default), or when a file is saved. The build system to use can be select from the Tools/Build System menu. If a project is open, the selected build system will be remembered for the project.
sublime-build , and it will now be accessible in the build system menu. Select it, hit Ctrl B to build, and then hit Ctrl Shift B to run the resulting program. Or you can use a Build and Run option and call it by hitting Ctrl B , then selecting that option.
Hopefully this is along the lines you are imagining. I attempted to simplify my solution and remove some things you likely do not need.
The advantages of this method are:
Let me know if you have any questions, or if I totally missed the mark on what you're looking to do.
Open our project file for editing:
Project -> Edit Project Add a new key to the project's settings that points to the desired virtualenv:
"settings": { "python_interpreter": "/home/user/.virtualenvs/example/bin/python" } A "python_interpreter" project settings key is also used by plugins like Anaconda.
Browse to Sublime Text's Packages directory:
Preferences -> Browse Packages... Create a new python file for our plugin, something like: project_venv_repls.py
Copy the following python code into this new file:
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' } ) Open user keybind file:
Preferences -> Key Bindings - User Add a few keybinds to make use of the plugin. Some examples:
// 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" } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With