En los últimos años Python a surgido como una gran alternativa a PHP, si bien es mas antiguo que PHP solo recientemente a despertado el interés de muchos desarrolladores, sin lugar a dudas es un gran lenguaje que sirve tanto para scripting, automatización y desarrollo web, tiene la enorme ventaja de poder ser utilizado para cubrir un amplia gama de necesidades.

¿Porque ahora y no antes? Probablemente temas de costos, no es posible utilizar Python en cualquier servicio, los hosting compartidos basados en PHP son extremadamente económicos frente a los dedicados sin embargo el surgimiento en los últimos años de Cloud VPS con las mismas ventajas de los dedicados y con los precios asequibles han hecho que soluciones como Python o Node sean mas populares.

Para competir directamente con PHP tenemos Django y Flask en Python, hoy hablaremos específicamente de Django que es sumamente fácil de instalar, en apenas un par de comandos y que insumen solo unos minutos podemos tener listo todo el entorno de desarrollo.

Una de las ventajas de Python es que soporta multi-hilos y procesamiento paralelo sumando a un repositorio inmenso de liberias disponible para instalar lo que facilita enormemente el tiempo de desarrollo de aplicaciones sobre todo para automatización e integración con otros sistemas proveyendo libreras especializadas ya listas.

Instando Python

Dependiendo de nuestra distribución podemos ejecutar desde una terminal tanto con sudo como root los siguientes paquetes

Instalando en Debian/Ubuntu

En Debian/Ubuntu se puede utilziar apt-get o aptitude, desde un terminal:

sudo apt-get install python3 python3-pip

Instalando en CentOS/RHEL/Fedora

En el caso de CentOS/RHEL podemos utilizar yum y dnf en caso de Fedora:

sudo yum install python3 python3-pip

Creando entrono e instalando Django

El primer paso es crear una ruta para nuestro proyecto, ingresar a la carpeta:

mkdir -p /ruta/proyecto
cd /ruta/proyecto

El siguiente paso es crear un entorno virtual, esto nos va a taer facilidades a la hora de mover el proyecto:

python3 -m venv .env

Luego lo activamos de la siguiente manera:

source .env/bin/activate

Lo anterior nos cambiara el prompt del usuario, ahora podemos instalar las dependencias exclusivas para el proyecto sin que se instalen en el equipo o afecten a otros proyectos

Actualizamos pip por las dudas:

pip install --upgrade pip

Instalamos las librerías de Django:

pip install django -U

Luego creamos el proyecto asignándole un nombre y el directorio por defecto, como ya estamos parados en el directorio ponemos . (punto):

django-admin startproject [nombre] .

Luego simplemente para correrlo podemos ejecutar lo siguiente

python3 manage.py runserver

sudo python3 manage.py runserver 80

En el caso anterior podemos especificar el puerto 80 u otro que queramos.

Error con SQLite

Hay un error que se puede presentar es que la version de Django que estemos instalando requiera una version de SQLite mas actual que la que el sistema ofrece:

  File "/usr/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 65, in check_sqlite_version
    raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

Los pasos para satisfacer este requerimiento no son difíciles aunque a principiantes puede costarles algo ya que hay que bajar y compilar SQLite y luego recopilar Python, la pregunta no es tanto si se puede sino mas bien ¿Vale la pena hacerlo?

En mi opinion la respuesta es no ya que seguramente vayamos a utilziar otra base de datos como MySQL o PostgreSQL así que lo mejor es deshabilitar SQLite en Django y para eso editamos el archivo settings.py y comentamos las siguientes lineas:

#DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
#}

Configurando un Servidor de Base de Datos

Aqui partimos de la base que si importar la base de datos que eligamos esta ya esta correctamente configurada y tenemos un usuario y contraseña para cualquiera de las dos

MySQL

En primer lugar debemos instalar algunas librerias según la distribución, para Debian/Ubuntu:

apt-get install python-dev default-libmysqlclient-dev

Para CentOS/RHEL

yum install python-devel mysql-devel

Luego instalamos el cliente para MySQL de Python

pip install mysqlclient

Con los paquetes de sistema instalados luego editamos el archivo settings.py y agregamos:

DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'base_de_datos',
            'USER': 'usuario_mysql',
            'PASSWORD': 'pass',
            'HOST': 'localhost',
            'PORT': '3306',
        }
    }

Lo anterior lo podemos hacer sustituyendo donde antes estaba la configuración de SQLite

python manage.py makemigrations

Y luego:

python manage.py migrate

PostgreSQL

Tal como paso con en el caso anterior primero necesitamos instalar algunas liberas para Debian/Ubuntu

apt-get install python-dev libpq-dev

Para CentOS/RHEL

yum install python-devel postgresql-devel

Luego instalamos el cliente para PostgreSQL de Python

pip install psycopg2

Con los paquetes de sistema instalados luego editamos el archivo settings.py y agregamos:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'base_de_datos',
        'USER': 'usuario_posgresql',
        'PASSWORD': 'pass',
        'HOST': 'localhost',
        'PORT': '',
    }
}

Lo anterior lo podemos hacer sustituyendo donde antes estaba la configuración de SQLite

python manage.py makemigrations

Y luego:

python manage.py migrate

Crear superusuario

Para crear el usuario administrador desde consola ejecutamos:

python manage.py createsuperuser

Guardar dependencias

Una herramienta interesante es la posibilidad de guardar las referencias a todas las liberias que instalemos durante el desarrollo, por eso siempre es bueno despues de instalar algo actualizar el archivo requirements.txt

pip freeze > requirements.txt

La razón es que cuando queramos desplegar nuestra aplicación en otra parte podemos instalar todas las mismas librerías que instalamos con pip de una forma realmente sencilla:

pip install -r requirements.txt

Conclusion

Se puede discutir muchos si Python es mejor o no que PHP lo que no se puede discutir Python se presenta como una gran alternativa para la web, desde hace muchos años se viene pronosticando la muerte de PHP que sigue tan vivo como siempre pese a quien le pese y la verdad es que desaparecerá en mucho tiempo lo cual no quiere decir que no haya lugar para Python y para Django que se ha vuelto muy popular en los últimos tiempos de la mano de los servicios en la nube para lo cual

Instalar Django es sumamente sencillo, lo mas complicado realmente o lo que puede llegar a ser mas delicado es instalar las librerías necesarias para que el motor de base de datos funcione, ya sea MySQL o PostgresSQL aunque eso no es culpa de Python el problema es que muchos programadores están acostumbrados a instalar todo de una como con XAMPP o WampServer y desentenderse de la instalación.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading