Sublime text3 y virtualenvs

Soy totalmente nuevo con sublime3, pero no pude encontrar nada útil para mi problema …

Tengo diferentes virtualenvs (hechos con virtualenwrapper) y me gustaría poder especificar qué venv usar en cada proyecto

Ya que estoy usando el complemento SublimeREPL para tener comstackciones personalizadas, ¿cómo puedo especificar con qué instalación de Python construir mi proyecto?

por ejemplo, cuando trabajo en el proyecto A, quiero ejecutar secuencias de comandos con el python de venvA, y cuando trabajo en el proyecto B, quiero ejecutar las cosas con venvB (utilizando una secuencia de comandos de comstackción diferente)

lo siento mi terrible ingles …

Esperemos que esto sea lo que estás imaginando. Intenté simplificar mi solución y eliminar algunas cosas que probablemente no necesite.

Las ventajas de este método son:

  • Presione un solo botón para iniciar un SublimeREPL con el intérprete correcto y ejecute un archivo si lo desea.
  • Después de configurar el intérprete, no se necesitan cambios ni pasos adicionales al cambiar de proyecto.
  • Puede extenderse fácilmente para recoger automáticamente las variables de entorno específicas del proyecto, los directorios de trabajo deseados, ejecutar pruebas, abrir un shell Django, etc.

Déjeme saber si tiene alguna pregunta, o si me he perdido la marca en lo que está buscando hacer.

Establecer el intérprete de Python del proyecto

  1. Abra nuestro archivo de proyecto para editarlo:

    Project -> Edit Project 
  2. Agregue una nueva clave a la configuración del proyecto que apunte al virtualenv deseado:

     "settings": { "python_interpreter": "/home/user/.virtualenvs/example/bin/python" } 

La clave de configuración del proyecto "python_interpreter" también es utilizada por complementos como Anaconda .

Crear un complemento para tomar esta configuración y lanzar un SublimeREPL

  1. Vaya al directorio de Packages Sublime Text:

     Preferences -> Browse Packages... 
  2. Crea un nuevo archivo de Python para nuestro complemento, algo como: project_venv_repls.py

  3. Copia el siguiente código de Python en este nuevo archivo:

     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' } ) 

Establecer teclas de acceso rápido

  1. Abrir archivo de enlace de usuario clave:

     Preferences -> Key Bindings - User 
  2. Agregue algunos enlaces clave para hacer uso del complemento. Algunos ejemplos:

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

Hay un paquete sublime de text3, llamado Virtualenv , que te permite comstackr usando Python desde tu virtualenv.

Es compatible con cualquier versión de Python en tu virtualenv, y funciona muy bien para mí (MacOS).

Para instalarlo, solo ordenamos + Shift + P para llamar a pacakge control (instálalo si aún no lo tiene), luego teclee install . A continuación, escriba virtualenv , cuando vea que aparece, haga clic en volver para instalarlo.

Después de instalarlo, seleccione Tools -> Build System -> Python + Virtualenv . Luego puedes usar el comando + B para ejecutar tus proyectos de Python.

Haga clic aquí para ver más información.

Estás buscando sistemas personalizados de construcción.

Desde la barra de menú, haga clic en Tools -> Build Systems -> New Build System...

Complete la plantilla que proporciona y .sublime-build con cualquier nombre de archivo que termine en .sublime-build en su carpeta de User .

Aquí está la documentación para hacer sistemas de comstackción personalizados:

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

Recomiendo hacer un sistema de comstackción personalizado para los scripts de Python, luego agregar variantes para cada entorno virtual que desee. (ver variantes http://docs.sublimetext.info/en/latest/reference/build_systems.html#variants )

Uno hace un sistema de construcción, puede cambiarlos de

 Tools -> Build Systems 

(si no se detecta automáticamente) y use la paleta de comandos (control por defecto ctrl + shift p) para cambiar entre las variantes.

El único “gotcha” es el parámetro "cmd" para describir qué comando ejecutar. De forma predeterminada, se necesita una matriz de cadenas para ejecutarse como un comando, pero puede usar "shell_cmd" lugar de usar una cadena de cómo lo ejecutaría a través de la línea de comandos.

Tengo una alternativa. Simplemente creando un nuevo ‘Sistema de comstackción’ que se ejecuta como en el entorno virtual. Aquí lo llamamos ‘my_python’. El objective es usar este sistema de comstackción para ejecutar mi script directamente sin dejar lo sublime. Necesitas:

  1. Primero, preferences->Browse Packages . Esto abrirá una carpeta en la que se encuentran los archivos de configuración. Vaya a dir User y cree un nuevo archivo llamado my_python.sublime-build (compuesto del nombre del sistema de comstackción seguido de .sublime_build . Después de hacer esto, vaya a Tools -> Build System y verá una nueva opción, my_python .
  2. Agregue la siguiente configuración JSON a ese archivo.

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

    Dentro de shell_cmd , cambie /Users/Ted/bsd/vector/.v_venv/bin/python a la ruta de su entorno virtual de Python.

  3. Luego solo usa la tecla corta para construir tu script.

Cuando desee cambiar su entorno virtual, simplemente copie su ruta al archivo de configuración y listo. Tal vez el enfoque parece contener mucho trabajo, pero funciona bien y es conveniente.