**HMC** Instalación de Julia Grupo de Estudio del Dpto. Ciencias de la Computación e Inteligencia Artificial (Universidad de Sevilla) Año 2022-2023 Basado en [`https://davidamos.dev/five-minutes-to-julia/`](https://davidamos.dev/five-minutes-to-julia/) ## Instalación de Julia con `juliaup` 1. Instala `juliaup`: ```` winget install julia -s msstore ```` Para MacOS/Linux sería: ```` curl -fsSL https://install.julialang.org | sh ```` En Windows te pide confirmar algunas cosas antes de ponerse a instalarlo porque se hace por medio del Microsoft Store. 2. Instala Julia 1.9 (usamos `juliaup` para hacerlo, en vez del sistema habitual de Julia). Normalmente, en la versión `x.y` se considera la última versión estable actual (en el momento de escribir este documento, es la 1.9.0x64): ```` juliaup add 1.9 ```` 3. `juliaup` permite tener fácilmente muchas versiones distintas, pero no sé ahora mismo si nos hará falta movernos entre versiones, así que lo más cómodo es hacer que esta versión (las más actual ahora mismo) sea la que se toma por defecto para no tener que hacer nada más: ```` juliaup default 1.9 ```` 4. `juliup` también proporciona comandos adicionales para actualizar (`update`), eliminar (`remove`), etc. Por ejemplo, si quieres ver qué versiones de Julia hay instaladas, basta que escribas (opbserva que muestra que es la versión por defecto, y que podrían aparecer más líneas dependiendo de las versiones instaladas anteriormente): ```` $ juliaup status Default Channel Version Update --------------------------------------------------- * 1.9 1.9.0+0.x64.w64.mingw32 ```` 5. Además, `juliaup` funciona bien con VSCode, porque son los mismos desarrolladores que preparan la extensión principal de Julia para este editor. ## Preparación de un entorno con herramientas de apoyo 1. Junto a la carpeta `.julia` crea la carpeta+subcarpeta `.julia-environments/tools`. 5. Ejecuta `julia` en esa carpeta: ```` .julia-environments/tools> julia ```` 6. En el REPL de Julia: 1. Entra en el gestor de paquetes y crea un nuevo entorno: ```` julia> ] (@v1.9) pkg> (@v1.9) pkg> activate . Activating new project at `~/.julia-enironments/tools` (tools) pkg> ```` 3. Añade los paquetes `Revise`, `OhMyREPL` y `BenchmarkTools`, que forman parte del ecosistema de trabajo de Julia y facilitan la tarea de tener un entorno de desarrollo algo más productivo: * `Revise.jl`: permite usar cambios en el código sin necesidad de reiniciar Julia. * `OhMyREPL.jl`: permite hacer *syntax highlighting* en el REPL y matching de corchetes/paréntesis (algo que solo se suele permitir en editores). * `BenchmarkTools.jl`: para análisis de rendimiento y comparativas. ```` (tools) pkg> add Revise OhMyREPL BenchmarkTools Updating registry at `~/.julia/registries/General.toml` Resolving package versions... Updating `~/.julia-enironments/tools/Project.toml` [6e4b80f9] + BenchmarkTools v1.3.2 [5fb14364] + OhMyREPL v0.5.13 [295af30f] + Revise v3.5.0 Updating `~/.julia-enironments/tools/Manifest.toml` [6e4b80f9] + BenchmarkTools v1.3.2 [da1fd8a2] + CodeTracking v1.2.0 [a8cc5b0e] + Crayons v4.1.1 ... (output truncated) (tools) pkg> ```` Tras estas tareas, se han creado dos ficheros en la carpeta `tools` (`Project.toml` y `Manifest.toml`) que definen el entorno en el que se cargarán automáticamente los paquetes anteriores. Cada vez que trabajemos en este entorno, tendremos a nuestra disposición esos paquetes sin necesidad de cargarlos. 4. Cierra el REPL (Ctrl+D). ## Entorno por defecto 1. Salta al directorio `.julia` y crea un subdirectorio `config`. Dentro de él, crea el fichero `startup.jl` con el siguiente contenido (lo puedes descargar de [aquí](./recursos/startup.jl)): ````julia # ~/.julia/config/startup.jl # Apila el entorno tools sobre el entorno actualmente activo. # Ver: https://docs.julialang.org/en/v1/manual/environment-variables/#JULIA_LOAD_PATH push!(LOAD_PATH, Base.Filesystem.homedir() * "/.julia-environments/tools/") # Importa las herramientas, o muestra un error si algo sale mal try @eval using OhMyREPL catch e @warn "Error inicializando OhMyREPL" exception=(e, catch_backtrace()) end try @eval using Revise catch e @warn "Error inicializando Revise" exception=(e, catch_backtrace()) end try @eval using BenchmarkTools catch e @warn "Error inicializando BenchmarkTools" exception=(e, catch_backtrace()) end ```` ## VSCode [Sitio web del editor](https://code.visualstudio.com/). Es el editor preferido para trabajar con Julia (de hecho, los desarrolladores de *Juno*, el editor de referencia que se desarrolló para Julia, han pasado a mantener la extensión de Julia para VSCode, así como la utilidad `juliaup` que hemos usado para mantener las versiones de Julia). Basta instalar la extensión Julia para comenzar a trabajar desde este editor sin el más mínimo problema (busca en las extensiones "Julia", es la primera que sale). Como se indica a continuación, es incluso un entorno ideal para la instalación de paquetes que pueden dar problemas de instalación desde la consola de Julia corriendo en la terminal de Windows. ## Paquetes interesantes Como hemos visto antes, para instalar estos paquetes basta ejecutar la consola de Julia (preferiblemente, desde VSCode) y ejecutar el gestor de paquetes: ```` julia> ] (@v1.9) pkg> (@v1.9) pkg> add Plots .... (@v1.9) pkg> ```` * `Plots`: **Cuidado, parece que no funciona la instalación si lo haces desde un Julia desde la Terminal de Windows debido a un problema con la librería FFMPEG, pero la instalación de los paquetes funciona si se hace desde la terminal de Julia de VSCode**. Hay algunas alternativas a `Plots` que pueden usarse: * `PlotlyLight`: Orientada a JS (es una interfaz de conexión con Plotly). * `Makie`: Quizás la más completa de Julia. * `IJulia`: Permite hacer uso de varias librerías interactivas en el REPL. Pero más importante, permite conectar Jupyter Notebook y Jupyter Lab con Julia: * **Jupyter Notebook**: `notebook()`, instalará conda. * **Jupyter Lab**: `jupyterlab()`, instalará conda. * `Pluto`: Una especie de notebooks enriquecidos propios de Julia. Tras instalarse, se inicia con `Pluto.run()`. * `CalculusWithJulia`: Librería asociada al curso del mismo nombre. Ver [aquí](https://jverzani.github.io/CalculusWithJuliaNotes.jl/). * `SymPy`: Permite realizar operaciones de cálculo simbólico. * `UpdateJulia`: Permite actualizar la distribución de Julia desde el propio Julia. Una vez instalado el paquete, basta cargarlo (`using UpdateJulia`), y ejecutar la instrucción `update_julia()`. Ha de tenerse presente que muchas (si no todas) de las funcionalidades que ofrece este paquete ya van incluidas en `juliaup`, pero se añade como paquete interesante porque `juliaup` está principalmente diseñado para los sistemas basados en Windows.