El ecosistema de paquetes de Julia: Pkg.jl y las librerías esenciales en 2026

El gestor de paquetes Pkg.jl viene integrado con Julia desde el principio. No es un addon externo como pip o npm: es parte de la instalación base y tiene reproducibilidad de entornos por diseño. Si vienes de Python, el modelo se parece más al de Rust con Cargo que al de pip con virtualenv.

Pkg.jl: uso básico

Hay dos formas de usar Pkg: el modo interactivo en el REPL (pulsando ]) o llamando a las funciones directamente con using Pkg:

# Modo función (en scripts o código)
using Pkg

Pkg.add("DataFrames")              # instalar paquete
Pkg.add(["CSV", "Plots", "Flux"])  # varios a la vez
Pkg.update()                       # actualizar todos
Pkg.update("DataFrames")           # actualizar uno
Pkg.remove("DataFrames")           # desinstalar
Pkg.status()                       # ver paquetes instalados
# Modo interactivo (en el REPL, pulsar ] para entrar en modo Pkg)
# pkg> add DataFrames
# pkg> add CSV Plots Flux
# pkg> update
# pkg> remove DataFrames
# pkg> status
# pkg> instantiate   (instalar lo que indica Manifest.toml)

Entornos con Project.toml y Manifest.toml

Cada proyecto Julia tiene dos ficheros de dependencias. Project.toml declara las dependencias directas con rangos de versión aceptables. Manifest.toml captura las versiones exactas de todas las dependencias (incluyendo las transitivas) para reproducibilidad total.

# Activar un entorno local (crea Project.toml y Manifest.toml en el directorio actual)
Pkg.activate(".")

# O activar al arrancar Julia:
# julia --project=.

# Una vez activado, add instala en el entorno local, no el global
Pkg.add("DataFrames")
Pkg.add("CSV")

El Project.toml generado tiene esta pinta:

# Project.toml (lo editas tú)
[deps]
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
DataFrames = "a93c6f00-e57d-5684-b466-afe8fa294f15"

[compat]
CSV = "0.10"
DataFrames = "1"
julia = "1.10"

El Manifest.toml lo genera Pkg automáticamente y no deberías editarlo a mano. Al hacer Pkg.instantiate() en otro ordenador con el mismo Manifest.toml, se instalan exactamente las mismas versiones.

Paquetes esenciales en 2026

El registro general de Julia (General Registry) tiene más de 10.000 paquetes. Estos son los más usados en ciencia de datos y computación científica:

Paquete

Uso

DataFrames.jl

Datos tabulares, equivalente a pandas

CSV.jl

Leer y escribir CSV con alto rendimiento

Plots.jl

Visualización, frontend multi-backend

Makie.jl

Visualización avanzada e interactiva

Flux.jl

Machine learning y redes neuronales

Zygote.jl

Diferenciación automática reverse mode

ForwardDiff.jl

Diferenciación automática forward mode

CUDA.jl

GPU computing con NVIDIA CUDA

DifferentialEquations.jl

Solvers de EDOs/EDPs, muy completo

Turing.jl

Programación probabilística bayesiana

Symbolics.jl

Álgebra simbólica nativa en Julia

PyCall.jl

Llamar a Python desde Julia

RCall.jl

Llamar a R desde Julia

Pluto.jl

Notebooks reactivos

IJulia.jl

Kernel de Julia para Jupyter

DifferentialEquations.jl: el caso especial

DifferentialEquations.jl merece mención aparte porque es, sin exageración, la librería de resolución de ecuaciones diferenciales más completa del mundo en cualquier lenguaje. Cubre EDOs, EDAs, EDPs, ecuaciones estocásticas y de retardo, con más de 100 solvers y selección automática del más apropiado:

using DifferentialEquations

# Ecuación de Lorenz (sistema caótico)
function lorenz!(du, u, p, t)
    ?, ?, ? = p
    du[1] = ? * (u[2] - u[1])
    du[2] = u[1] * (? - u[3]) - u[2]
    du[3] = u[1] * u[2] - ? * u[3]
end

u0 = [1.0, 0.0, 0.0]
tspan = (0.0, 100.0)
p = (10.0, 28.0, 8/3)

problema = ODEProblem(lorenz!, u0, tspan, p)
solucion = solve(problema, Tsit5())  # solver Runge-Kutta adaptativo

# La solución es interpolable
u_en_t50 = solucion(50.0)

Turing.jl: estadística bayesiana

using Turing

# Modelo bayesiano simple
@model function modelo_normal(datos)
    mu    ~ Normal(0, 10)      # prior para la media
    sigma ~ InverseGamma(2, 3) # prior para la desviación típica
    for i in eachindex(datos)
        datos[i] ~ Normal(mu, sigma)
    end
end

datos_obs = randn(100) .* 2 .+ 5  # datos simulados con mu=5, sigma=2

modelo = modelo_normal(datos_obs)
chain  = sample(modelo, NUTS(), 1000)  # MCMC con No-U-Turn Sampler

Añadir un paquete de GitHub (no registrado)

# Instalar directamente desde un repositorio git
Pkg.add(url="https://github.com/usuario/MiPaquete.jl")

# Instalar un branch específico
Pkg.add(url="https://github.com/usuario/MiPaquete.jl", rev="dev")

El ecosistema de Julia en 2026 tiene cobertura sólida para computación científica, machine learning y estadística. Las áreas donde todavía hay menos opciones que en Python son desarrollo web, procesamiento de imágenes general y herramientas de UI. Para esas áreas, la interoperabilidad con Python es la salida práctica. Todo lo demás, desde redes neuronales hasta análisis de datos, tiene alternativas nativas maduras.

Imagen: Pexels / Daniil Komov

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP