Visual Studio Code

Después de resistirme por un buen rato a hacer uso de un IDE, finalmente cedí.


Índice

  1. Instalación
  2. Uso
  3. Extensiones
  4. Desinstalación

Notas sin mucha organización (incluso orden) por el momento.

Instalación

macOS

Fácil, como todo en macOS (a pesar de venir de Microsoft); drag & drop desde la imagen de instalación a donde quiera que se desee tener la aplicación (usualmente /Applications, para que se incluya automáticamente en el Launchpad).

Para que pueda ser lanzado desde la línea de comando, hacer:

cat <> ~/.bash_profile
# Add Visual Studio Code (code)
export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
EOF

requiere «resourcear» el .bash_profile (o salir y volver a entrar en la sesión de terminal). Hay una nota en la documentación que indica que el «\$» en el comando es para prever la expansión de la concatenación y que debe removerse si se ejecuta desde la linea de comando. Yo lo hice tal cual y así quedó:

...
# Add Visual Studio Code (code)
export PATH="$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
...

Windows

Fiel a su tradición, para el caso de Windows, se hace uso de un instalador. Para la instalación realizada se tomaron todas las opciones por defecto ofrecidas, salvo al final en el que se se activaron aquellas para crear entradas en los menúes de contexto y para abrir archivos con VSCode.

Un aspecto positivo de VS Code es el poder contar con agregados a la funcionalidad del editor. De los probados, se hace una lista abajo. Notas en cada uno de ellas según me he encontrado con sus particularidades.

Uso

Depuración

La depuración de programas se puede llevar a cabo tanto en el código como en las unindades de prueba, aunque estas se llevan a cabo en forma separada, es decir, en opciones diferentes de la interfaz de VSCode.

Run and Debug

La ejecución y depuración de programas dentro del entorno de VSCode parte de la definicion de una configuración.

Testing

Para poder llevar a cabo sesiones de depuración en la sección de pruebas, es primero necesario definir el framework que se usará.

Python

Para seleccionar un interprete de Python en particular:

  1. vía la paleta de comandos:
    • Mac: + Shift + P
    • PC: Ctrl + Shift + P
  2. Buscar por Python: select Interpreter (escribir parte de esta cadena o buscar en la lista).
  3. De la lista que se muestre seleccionar el intérprete.

Extensiones

Vim (vscodevim)

Fanático del vi, no podía dejar de tener esta extensión. Algunas cosas con las que me he encontrado de ella son:

  • Al menos en el caso de la versión para Windows de VS Code, la búsqueda de la cadena bajo el cursos debe ser habilitada: File > Preferences > Settings. Buscar por vim.visualstar y dar clic en el resultado (debe ser el único) para activarlo.

Python y Pylance

La versión o adición de Microsoft de Python (por aquello de «no buscarle los tres pies al gato«; es decir tomar lo que esta empresa produce para no entrar en conflictos).

GitGraph

La extensión GitGraph es muy útil para el seguimiento de un proyecto «versionado» con git.

Remote – WSL

El manejo de los archivos en el subsistema linux proporcionado por Windows es de cuidado (es decir, con WSL 1 hay el riesgo de batir cosas si se trabaja con archivos de este subsistema desde afuera, desde el entorno de Windows o viceversa).

Sync Scroll

Una extensión muy útil para cuando se está editando un archivo tomando de referencia algún otro es Sync Scroll, que como el nombre sugiere permite hacer un scroll simultáneo de dos secciones de edición.

SynthWave ’84

La extensión SynthWave ’84 es en realidad un «tema» (un esquema de coloración) que busca rememorar esos «neon dreams» que caracterizó la música y moda de la década de 1980.

Material Icon Theme

Para presentar ícenos en el explorador de archivos. En lugar de los íconos conceptuales permite identificar los archivos por otros comercial y tecnológicamente más ubíicuos.

Amethyst Themes

Temas de colorización de tonos morados. Bueno para trabajar con baja iluminación.

Jupyter notebooks

VS Code permite ejecutar libretas Jupyter2.

Work in progress….

Troubleshooting

Algunas soluciones a problemas y dificultades experimentadas.

DLL

El siguiente mensaje de error aparece en la «DEBUG CONSOLE» al tratar de ejecutar una sesión de depuración sobre una unidad de prueba. Para este caso en Windows 10 con miniconda instalado y sobre SQLite3 (el cual ya estaba instalado). Los pasos seguidos consistieron en descargar la versión de SQLLite apropiada para el sistema operativo y arquitectura del procesador del sitio del proyecto de SQLite, y copiar los archivos sqlite3.dll y sqlite3.def del paquete de distribucion en el entorno creado por conda, en su folder de DLLs. No fue necesario reiniciar VSCode.

Traceback (most recent call last):
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\runpy.py», line 193, in run_module_as_main «main«, mod_spec) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\runpy.py», line 85, in _run_code exec(code, run_globals) File «c:\Users\WH895NT.vscode\extensions\ms-python.python-2021.9.1218897484\pythonFiles\lib\python\debugpy__main_.py», line 45, in
cli.main()
File «c:\Users\WH895NT.vscode\extensions\ms-python.python-2021.9.1218897484\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py», line 444, in main
run()
File «c:\Users\WH895NT.vscode\extensions\ms-python.python-2021.9.1218897484\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py», line 285, in run_file
runpy.run_path(target_as_str, run_name=compat.force_str(«main«))
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\runpy.py», line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\runpy.py», line 96, in run_module_code mod_name, mod_spec, pkg_name, script_name) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\runpy.py», line 85, in _run_code exec(code, run_globals) File «c:\Users\WH895NT.vscode\extensions\ms-python.python-2021.9.1218897484\pythonFiles\testlauncher.py», line 44, in run(cwd, testRunner, args) File «c:\Users\WH895NT.vscode\extensions\ms-python.python-2021.9.1218897484\pythonFiles\testlauncher.py», line 36, in run pytest.main(args) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages_pytest\config__init_.py», line 143, in main
config = prepareconfig(args, plugins) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages_pytest\config__init_.py», line 319, in prepareconfig pluginmanager=pluginmanager, args=args File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\pluggy\hooks.py», line 286, in call return self._hookexec(self, self.get_hookimpls(), kwargs) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\pluggy\manager.py», line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\pluggy\manager.py», line 87, in firstresult=hook.spec.opts.get(«firstresult») if hook.spec else False, File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\pluggy\callers.py», line 203, in _multicall gen.send(outcome) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages_pytest\helpconfig.py», line 100, in pytest_cmdline_parse config: Config = outcome.get_result() File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\pluggy\callers.py», line 80, in get_result raise ex[1].with_traceback(ex[2]) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\pluggy\callers.py», line 187, in _multicall res = hook_impl.function(*args) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages_pytest\config__init_.py», line 1003, in pytest_cmdline_parse
self.parse(args)
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages_pytest\config__init__.py», line 1283, in parse
self.preparse(args, addopts=addopts) File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages_pytest\config__init_.py», line 1172, in preparse self.pluginmanager.load_setuptools_entrypoints(«pytest11») File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\pluggy\manager.py», line 299, in load_setuptools_entrypoints plugin = ep.load() File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\importlib_metadata__init_.py», line 100, in load
module = import_module(match.group(‘module’))
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\importlib__init__.py», line 127, in import_module
return bootstrap._gcd_import(name[level:], package, level) File «», line 1006, in _gcd_import File «», line 983, in _find_and_load File «», line 967, in _find_and_load_unlocked File «», line 677, in _load_unlocked File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages_pytest\assertion\rewrite.py», line 170, in exec_module exec(co, module.dict) File «c:\users\wh895nt\miniconda3\envs\canvas\lib\site-packages\pytest_cov\plugin.py», line 6, in import coverage File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\coverage__init_.py», line 15, in
from coverage.control import Coverage, process_startup
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\coverage\control.py», line 21, in
from coverage.data import CoverageData, combine_parallel_data
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\coverage\data.py», line 17, in
from coverage.sqldata import CoverageData
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\site-packages\coverage\sqldata.py», line 15, in
import sqlite3
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\sqlite3__init__.py», line 23, in
from sqlite3.dbapi2 import *
File «C:\Users\WH895NT\Miniconda3\envs\canvas\lib\sqlite3\dbapi2.py», line 27, in
from _sqlite3 import *
ImportError: DLL load failed: The specified module could not be found.

Desinstalación

La forma más simple de desinstalar la aplicación es mediante un desinstalador, como AppCleaner. La forma más ingenua de hacerlo es sólo arrastrando la aplicación al basurero, como muchos indican; este método sólo hace que se queden regados muchos archivos y directorios creados por la aplicación y debe uno buscar las sobras5,6; más si se trata de una instalación general en un equipo con más de un usuario haciendo uso de la aplicación (ver sección Instalación).

La forma más simple no es perfecta tampoco. Si bien ayuda a identificar muchos archivos de trabajo, habrá varios que se le escaparán y debe uno buscarlos por cada usuario que haya hecho uso de esto6.

Referencias

  1. «Visual Studio Code«, Wikipedia, web. Visited: 2020.05.18. URL: https://en.wikipedia.org/wiki/Visual_Studio_Code.
  2. «Working with Jupyter Notebooks in Visual Studio Code«, visualstudio.com, web. Visited: 2020.05.21. URL: https://code.visualstudio.com/docs/python/jupyter-support#_setting-up-your-environment/.
  3. «Visual Studio Code Tutorial for Beginners – Introduction«, academind.com, YouTube video. Published: 2018.05.24; visited: 2021.08.29. URL: https://youtu.be/VqCgcpAypFQ.
  4. https://www.dev2qa.com/how-to-fix-importerror-dll-load-failed-while-importing-_sqlite3-the-specified-module-could-not-be-found/
  5. «How to completely uninstall vscode on mac«, stackoverflow.com, web. Asked: 2017.03.05; consulted: 2022.05.21. URL: https://stackoverflow.com/questions/42603103/how-to-completely-uninstall-vscode-on-mac.
  6. Eduardo René Rodríguez Ávila, «Desinstalando aplicaciones de mac (5)«, blog. Publicado: 2022.05.21. URL: https://eravila.wordpress.com/2022/05/21/desinstalando-aplicaciones-de-mac-5/.

Twitter Wordpress eMail
© Todos los derechos reservados.
Dr. Eduardo René Rodríguez Avila
Creación: 2020.01.25
Última actualización: 2022.07.25
El contenido de este sitio puede ser copiado y reproducido libremente mientras no sea alterado y se cite su origen. Marcas y productos registrados son citados por referencia y sin fines de lucro o dolo. Todas las opiniones son a título personal del o los autores de éstas y, salvo sea expresado de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello que es tratado. Para conocer más sobre la posición de privacidad y responsabilidad de lo que se presenta en este sitio web y como ha sido obtenido, consulte la declaración al respecto.