Configuración e instalación de dependencias para el proyecto PlatziMongo

18/26

Lectura

¡Hola! Ahora vamos a aplicar todo lo aprendido durante el curso en la creación de un proyecto que usará MongoDB. ¡No te preocupes! Este módulo es completamente opcional, si quieres puedes saltarte al siguiente módulo. El examen no incluye preguntas sobre este módulo 😉.

🐍 ¡Crearemos una pequeña API desarrollada con Python la cual simulará ser un mini Platzi! Esta es una aplicación backend que se comunicará con nuestra base de datos mediante el driver Pymongo. En esta clase aprenderás a cómo instalar y configurar todas las herramientas que necesitarás para trabajar el proyecto de PlatziMongo. En resumen, esto es lo que haremos:

  1. Descargaremos el código base de nuestro proyecto desde GitHub.
  2. Instalaremos Postman para facilitarnos interactuar con nuestra API.
  3. Crearemos un entorno virtual con Python.
  4. Instalaremos las dependencias de nuestro proyecto.
  5. ¡Estableceremos las configuraciones finales para que nuestro proyecto empiece a funcionar!

¡Así que vamos a ello!

Clonando el repositorio del proyecto

Lo primero que necesitamos hacer es clonar el repositorio del proyecto, esto lo puedes hacer con el siguiente comando en la carpeta de tu preferencia:

git clone https://github.com/AERC18/platzi-mongo

Este repositorio incluye el código base de nuestro proyecto, en las próximas clases nos encargaremos de completarlo añadiendo las consultas necesarias a nuestra base de datos.

Adicionalmente, puedes ver el código de cada clase en las diferentes ramas que incluye este proyecto. Puedes ver las ramas ejecutando el siguiente comando dentro de la carpeta del mismo:

git branch

Instalación de Postman

Ya que tenemos el código base de nuestra mini API descargado, ahora necesitamos una manera de comunicarnos con ella. Recuerda que este código que descargamos es de una aplicación backend que se comunicará con nuestra base de datos en Mongo, y como toda aplicación backend, esta necesita recibir solicitudes HTTP para realizar las acciones necesarias.

Podríamos hacer una aplicación frontend que se encargue de mandar estas solicitudes, o podríamos apoyarnos de herramientas como Postman que se encargan de mandar estas solicitudes hacia cualquier backend, así nos ahorramos el tener que programar una aplicación frontend 😉.

A continuación te explico los pasos para que descargues Postman:

  1. Ve a su página oficial en https://www.getpostman.com/downloads/ y dale click al botón de “Download App”
Postman
  1. Ejecuta el instalador, Postman se instalará y configurará automáticamente, tú solo espera.
Postman Installing
  1. ¡Ya tienes instalado Postman! Te recomiendo crear una cuenta para usar Postman. Puedes registrarte por medio de las opciones que te da Postman cuando se abre, o puedes clicar en la opción “Skip an go to the app” para saltarte este paso:
Register Postman.png

Hasta este punto ya deberías tener el programa instalado en tu computadora. En Postman podemos crear algunas solicitudes HTTP de ejemplo y compartirlas con otras personas para que ellos solo tengan que ejecutarlas. Yo he creado algunas solicitudes de ejemplo para nuestro proyecto, a continuación te las comparto y te explico cómo importarlas en tu cliente de Postman:

  1. Primero debemos seleccionar un Workspace dentro de Postman, para ello abrimos la pestaña “Workspace” y seleccionamos “My Workspace”.
Workspace tab.png
  1. En el panel de la derecha hacemos click en el botón que dice “Import” y en la ventana emergente que nos aparece seleccionamos la pestaña “Link”, ahí pegaremos el siguiente enlace: https://raw.githubusercontent.com/platzi/mongodb-2019/main/PlatziMongo.json
Import collection.png
  1. Damos click al botón “Continue” y ¡listo! Con eso ya deberías tener las solicitudes de prueba importadas en tu Postman, en las siguientes clases te mostraré cómo usarlas 😉.

Recuerda que puedes profundizar más en el funcionamiento de Postman en el Curso de Postman.

Creando un ambiente virtual para nuestro proyecto

Ahora que ya tenemos Postman instalado y nuestro código base descargado es necesario que instalemos las dependencias para el mismo. Para ello, como en todo buen proyecto con Python, crearemos un ambiente virtual. Es importante recalcar que para esto debes tener instalada una versión de Python superior a la versión 3.3. Puedes aprender a cómo instalar Python según tu sistema operativo en nuestro Curso Básico de Python 💪.

Para crear nuestro ambiente virtual debemos ejecutar este comando desde dentro de la carpeta de nuestro proyecto:

python3 -m venv venv

Con el ambiente creado, ahora debemos activarlo, para ello podemos hacerlo con el siguiente comando si estás en Windows:

.\venv\Scripts\activate

O con el siguiente comando, en caso de que estes en Linux o macOS:

source venv/bin/activate

Te puedes asegurar de que tu entorno virtual está activo viendo que a la izquierda de tu terminal aparece su nombre entre paréntesis. Para desactivar el ambiente virtual puedes lograrlo con el siguiente comando:

deactivate

Otra forma de crear ambientes virtuales con Python es mediante el uso de Anaconda. Puedes profundizar más en el tema de ambientes virtuales en el Curso de Python Intermedio, pero para este proyecto, con lo que te he explicado aquí basta 😉.

Instalación de las dependencias del proyecto

Ya que tenemos el ambiente virtual creado en nuestro proyecto debes activarlo para poder instalar las dependencias. Para instalarlas es tan simple como correr el siguiente comando asegurándote de que tu entorno virtual está activo:

pip3 install -r requirements.txt
Activación del ambiente virtual

En caso de que tengas algún error solo ejecuta el comando de nuevo, pip se encargará de solucionarlo en la primera incidencia.

Variables de entorno necesarias para ejecutar el proyecto

Por último, para que el proyecto se ejecute sin errores es necesario exportar las variables de entorno que se muestran a continuación, simplemente ejecuta cada una en tu terminal:

  • export FLASK_APP=platzi-api
  • export FLASK_ENV=development
  • export PLATZI_DB_URI="MONGO-URI"

Debes reemplazar MONGO-URI por la URI de MongoDB atlas en el siguiente formato:

mongodb+srv://<TU-USUARIO>:<TU-CONTRASEÑA>@<TU-ATLAS-URI>

Ejemplo:

mongodb+srv://m220student:[email protected]

Cuando hayas ejecutado todas las variables de entorno ejecuta el siguiente comando para que la aplicación empiece a correr:

flask run

De esta manera se ejecutará un servidor de desarrollo apuntando a http://127.0.0.1:5000 el cual contendrá nuestra API lista para empezar a trabajar 😉.

De esta forma terminamos la configuración de nuestro entorno de desarrollo. No olvides abrir el proyecto en tu editor de código preferido, en mi caso usaré Pycharm, pero tú puedes usar Visual Studio Code si así lo deseas.

Aportes 160

Preguntas 15

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

En mi caso estoy utilizando Windows 10
Una vez que hayan instalado anaconda.

  1. Abrimos la terminal de anaconda, la buscamos con el nombre de “Anaconda Prompt”
  2. Clonamos el repositorio: git clone https://github.com/AERC18/platzi-mongo.git
  3. Ingresamos a la carpeta: cd platzi-mongo
  4. Crear un nuevo ambiente: conda create --name platzi-mongo
  5. Activar el ambiente: conda activate platzi-mongo
  6. Instalar dependencias: conda install --file requirements.txt
  7. Ingresar las variables necesarias para ejecutar el proyecto:
    set FLASK_APP=platzi-api
    set FLASK_ENV=development
    set PLATZI_DB_URI=“mongodb+srv://platzi-admin:[email protected]
  8. Corremos el servidor: flask run

Poco didáctico, y para muchos usuarios problemático.

Para los usuarios de Windows las variables de entorno se definen de esta forma de esta forma:

Windows CMD:

set FLASK_APP=platzi-api
set FLASK_ENV=development
set PLATZI_DB_URI=“MONGO-URI”

Windows PowerShell:

$env:FLASK_APP = "platzi-api"
$env:FLASK_ENV = "development"
$env:PLATZI_DB_URI = "MONGO-URI”

Creo que esto debió ser explicado en un video, y es por estas cosas que no recomendaría platzi

Se que es importante aprender y que no te den todo servido, pero se deben instalar dos aplicaciones adicionales que requieren conocimientos mas extensos y cuando uno solicita apoyo no veo respuesta, la mayoria estamos aprendiendo y he notado que existen una infinidad de comentarios que buscan apoyo sin resolver y debe ser algo que deben mejorar como Plataforma. He noto han sido bastantes los que han tenido problemas con esto, por lo que seria excelente que alguien pudiera editar esta sección del curso, o agregar documentación e identificar en que plataforma se trabajo las instrucciones anteriores.
😓😪

Esto lo deben poner en la tereminal tal cual y dar enter:

export FLASK_APP=platzi-api

export FLASK_ENV=development

Para esta deben ir a Atlas, a la parte de su cluster le dan en connect para que les salgan las opciones y le dan en “Connect to your application”

export PLATZI_DB_URI=“MONGO-URI”

Después en driver seleccionan Python y su versión correspondiente y copian el string que les aparece en connection String Only solo hasta la parte “.mongodb.net/” lo que viene después de .net/… lo ignoran

regresan a su terminal y ejecutan el comando quitando los " " y con su string de conexión
export PLATZI_DB_URI=…mongodb.net/

Ejecutan el comando flask run y al entrar al http://127.0.0.1:5000/ les saldrá un 404 not founbd, es normal, deben entrar al http://127.0.0.1:5000/carreras o http://127.0.0.1:5000/carreras/test. Si les aparece un error de DNS es porque tienen algún typo en su string de conexión verifiquen que es exactamente igual a la proporcionada por Atlas

Es más fácil después de haber tomado los cursos de Git, Python, Digital Ocean y tener algo de experiencia con Anaconda…
Deberían hacer un video con el ejemplo de instalación de dependencias para cada sistema operativo; seguir las instrucciones del texto sin las bases anteriores debe ser difícil y seguramente debe tener algún impacto en el abandono del curso.

¡Lo logre! 😃 , quiero compartir una lista de errores comunes debido a que veo que a mucha gente se le dificulto tanto como a mi:

  • “no module named bson”:
    Este se puede solucionar instalando

-> pip install pymongo

debido a que el package de pymongo instala gridfs y bson

  • puedes instalar:

-> pip install bson

pero es probable que después tengas el error:

  • “no module named bson.json_util”:
    Esto se debe un conflicto entre la instalación entre el bson y pymongo una solución posible es:

pip uninstall bson
pip uninstall pymongo
pip install pymongo

  • the dnspython module must be installed to use mongodb+srv // uris:

La solución aportada por el usuario @Jcfaundez fue usar pip install dnspython

https://platzi.com/comentario/659545/

  • pymongo.errors.ConfigurationError: None of DNS query names exist:

el usuario @cems aporto esta solución https://platzi.com/comentario/569030/

  • pymongo.errors.ConfigurationError: None of DNS query names exist

Esto significa que la URI de Mongo esta mal escrita, dejo el enlace a un comentario del usuario @JavierSLX donde explica como verla en el MongoDB Atlas.

https://platzi.com/comentario/576505/

  • 404 Nof Found:

Prueben dirigirse al enlace http://127.0.0.1:5000/carreras

Como recomendación general instaria a los que somos usuarios de Windows 10 a descargar la consola de Ubuntu desde la Microsof store como enseñan en el curso de Introducción a la termianl de comandos aqui:
https://platzi.com/clases/1748-terminal/24394-windows-subsystem-for-linux-wsl-como-acceder-a-la-/

De verdad que es mucho más amigable que trabajar directamente con las terminales de windows.


Dejo otros enlaces que utilice en mi odisea, espero que el hecho de que algunos esten en inglés no sea una barrera:

https://docs.github.com/es/github/creating-cloning-and-archiving-repositories/cloning-a-repository

https://gist.github.com/kauffmanes/5e74916617f9993bc3479f401dfec7da

https://stackoverflow.com/questions/35254975/import-error-no-module-named-bson

https://github.com/py-bson/bson/issues/19

En mi caso me aparecía este error al hacer flask run en la terminal (Anaconda Powershell Prompt anaconda 3)

(base) PS C:\Users\lfzar\Documents\GitHub\platzi-mongo> flask run
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
Usage: flask run [OPTIONS]
Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.
Para solucionarlo use las instrucciones de Boris pero aplicando las variables de entorno propuestas por Jose Arturo Enriquez.
0. Instalar anaconda con el .exe haciendo next conforme lo pida.
1.	Abrimos la terminal de anaconda, la buscamos con el nombre de “Anaconda Powershell Prompt”
2.	Clonamos el repositorio: git clone https://github.com/AERC18/platzi-mongo.git
3.	Ingresamos a la carpeta: cd platzi-mongo
4.	Crear un nuevo ambiente: conda create --name platzi-mongo
5.	Activar el ambiente: conda activate platzi-mongo
6.	Instalar dependencias: conda install --file requirements.txt
7.	Ingresar las variables necesarias para ejecutar el proyecto:
$env:FLASK_APP=platzi-api
$env:FLASK_ENV=development
$env:PLATZI_DB_URI=“mongodb+srv://platzi-admin:[email protected]
8.	Corremos el servidor: flask run


En MacOS

1.- Clonar el repositorio de código con platzi-mongo e ingresar a la carpeta platzi-mongo

git clone https://github.com/AERC18/platzi-mongo.git
cd platzi-mongo

2.- Instalar Postman e importar la colección https://www.getpostman.com/collections/ffcbfb5c8d5cd2dc52d2

brew cask install postman

3.- Instalar Anaconda

brew cask install anaconda

agregar la siguiente línea a tu archivo ~/.bash_profile

export PATH=/usr/local/anaconda3/bin:"$PATH"

4.- Con Anaconda instalado, crea un nuevo ambiente e instala las dependencias del proyecto

conda create --name platzi-mongo
conda activate platzi-mongo
pip install -r requirements.txt

5.- Configurar las variables de entorno necesarias para ejecutar el proyecto

export FLASK_APP=platzi-api
export FLASK_ENV=development
export PLATZI_DB_URI=mongodb+srv://tusuario:[email protected]

6.- ejecuta el proyecto y prueba ejecutar cualquier Request de la colección Platzi en Postman

flask run

nota: la aplicación no tiene frontend, es una API, así que no te preocupes si abres la url http://127.0.0.1:5000 y te aparece un error

This site can’t be reached 127.0.0.1 refused to connect.

pero si que puedes abrir la siguiente ruta en el navegador y ver el resultado 😉

http://127.0.0.1:5000/carreras

Con el mayor de los respetos, considero y no creo que solo sea el del problema, “El profesor se salta un muchos pasos”, tengo mucho tiempo realizando esta guía y no encuentro la forma de crear el servidor para windows, el profesor debió ser mas detallado con esto.

Si te encuentras en la seccion de Instalar Postman y recibes un error por la version del formato V1 a V2, puedes utilizar esta coleccion de postman:

https://gist.github.com/rromomx/7501649dc2e1ba47748f189353bbde6a

Solo descargas y lo importas como archivo

La explicación para esta configuración se podría explicar muuuuucho mejor…

Falta metodología !!! Se debe mejorar el curso. Llego hasta aquí y no puedo continuar , solo me queda ver los videos. Debe existir garantia para quien no esta conforme.

Suerte cuando lleguen aca

En Windows
para exportar las variables de entorno
nota: tengo windows 7 pero supongo es igual en las demás versiones.

subí las imagenes en otra plataforma ya que este editor me daba problemas al momento de subir las imagenes

1-se van a equipo

2-le dan click derecho y seleccionan propiedades

3-en panel izquierdo de la ventana seleccionan configuración avanzada del sistema

4- se van hasta la parte de abajo que dice variables de entorno https://ibb.co/X5WCfMq

5 - seleccionan añadir https://ibb.co/vV9jfNs

6 - copian el nombre y el valor de la variable, luego , aceptar https://ibb.co/SXfB96C

y ya por ultimo guardan todo y reinician su computadora

nota: para la ultima variable PLATZI_DB_URI su valor va a ser el siguiente
mongodb+srv://tusuario:[email protected]

tal como dijo el amigo que hizo el proceso en mac, y eso es todo, espero le sirva a alguien ya que como siempre hay cosas que varían en los sistemas operativos, saludos

Muy incompleto el tutorial la verdad

Concuerdo con la mayoría de los compañeros de este curso esta parte debería ser explicada por vídeo se supone que antes de lanzar un curso debe pasar por un control de calidad y no tener estos tropiezo que son molestos para los estudiantes.

Que confuso todo… demasiadas instalaciones y no se para que sirve cada una. Esto es MongoDB y termino instalando una plataforma de Python? como dijo un compañero, muy poco didactico!

INSTALANDO PROYECTO PARA WSL UBUNTU
Debido a que uso WSL con Ubuntu tuve que realizar los pasos del tutorial de una forma un poco diferente tomando en cuenta que además no tenía algunas herramientas instaladas, he aquí los pasos que realice:
.
.
INSTALAR PIP:
#Actualizamos nuestra lista de dependencias de Linux:
sudo apt-get update
#Instalamos las actualizaciones de nuestras dependencias de Linux:
sudo apt-get upgrade
#Verificamos que version de python tenemos:
##Si el siguiente comando nos arroja resultado, tenemos python 3:
python3 --version
##Procedemos a instalar pip con el siguiente comando:
sudo apt-get install python3-pip
##Si el comando inicial arroja “command not found” probemos con este:
python --version
##Procedemos a instalar pip con el siguiente comando:
sudo apt-get install python-pip
##Si ambos arrojan “command not found” debemos de instalar python primero
##antes de instalar pip con el siguiente comando:
sudo apt-get install python3
.
.
INSTALAR ANACONDA:
#Entrar a la página:
https://www.anaconda.com/products/individual
#En la sección de “Anaconda Installers” en el apartado de linux descargar “64-Bit (x86) Installer (529 MB)”.
#Copiar y pegar el archivo .sh que se descargó dentro de su carpeta home en WSL.
#Ejecutar el archivo .sh de la siguiente manera:
./NombreDelArchivo.sh
#Leer las instrucciones del instalador y seguir los pasos del indicador.
#Si todo sale bien, el instalador anterior debió haberles creado la carpeta “anaconda3” en su home.
.
.
CREAR EL AMBIENTE CON ANACONDA:
#Navegar hasta el directorio del proyecto
cd platzi-mongo
#crear un nuevo ambiente
<pathRelativo|pathAbsoluto>/anaconda3/bin/conda create --name platzi-mongo
#activar el ambiente
<pathRelativo|pathAbsoluto>/anaconda3/bin/conda activate platzi-mongo
#para desactivar el ambiente
<pathRelativo|pathAbsoluto>/anaconda3/bin/conda deactivate
#Debido a la forma en la que instalamos anaconda hay que ir directamente a la carpeta
#en la que se instaló para ejecutar el binario “conda”, en mi caso la carpeta “anaconda3”
#y la carpeta “platzi-mongo” están al mismo nivel en mi home por lo que ejecutó conda de la siguiente forma:
…/anaconda3/bin/conda create --name platzi-mongo
.
.
INSTALAR DEPENDENCIAS DEL PROYECTO:
pip install -r requirements.txt
#Es posible que se les muestre el siguiente warning indicandoles donde se encuentra el script de “flask”
#"que deberemos ejecutar más tarde para correr el proyecto, en mi caso “/home/nombre_de_usuario/.local/bin”.
WARNING: The script flask is installed in ‘/home/nombre_de_usuario/.local/bin’ which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
.
.
VARIABLES DE ENTORNO PARA EJECUTAR EL PROYECTO:
export FLASK_APP=platzi-api
export FLASK_ENV=development
export PLATZI_DB_URI=“MONGO-URI”
#NOTA: La URI de la que habla la sacamos de la sección “Connect your application” de #nuestro cluster.
.
.
INICIAR EL SERVIDOR
/home/nombre_de_usuario/.local/bin/flask run
#Asegurrarnos de estar dentro de la carpeta del proyecto cuado se ejecute el colmando
#anterior.
.
.
Lamento no poder simplificarlo más pero quería dejar bien en claro los pasos que seguí teniendo WSL.
Ojalá les sirva de algo.

Esta es la URL que deben utilizar para que chequen que su configuración fue correcta

Para configurar las variables de entorno en windows a través de CLI se utiliza la palabra reservada SET en lugar de EXPORT, Por ejemplo:

set FLASK_APP=platzi-api
set FLASK_ENV=development
seT PLATZI_DB_URI="mongodb+srv://user:[email protected]"

Me consto bastante tiempo configurar esto en windows, y eso que llevo años trabajando tanto en linux como en windows. No me puedo imaginar el martirio que debe significar esto para los que recien estan aprendiendo.

Hagan un video de esto en windows, o expliquen mas a detalle, no puedo hacer funcionar el proyecto, y como no se nada de Python no puedo seguir el curso en las partes del proyecto.

Es cierto, esta parte es muy complicada. De hecho es imposible si no se tiene experiencia utilizando Anaconda, python, línea de comandos, git… Deberían crear un container en docker para poder seguir sin esta experiencia.

RECOMENDACIÓN: Para poder ejecutar todos los comandos en windows de esta clase, despues de que se instala Anaconda, tambien se instala el anaconda prompt (así búsquenlo en sus programas). Con esa terminal puedes hacer prácticamente todo

Cuando intenté instalar las dependencias y ejecutar el entorno en OSX tuve problemas con los comandos y así fue como pude solucionarlo:
Dependencias:

pip3 install -r requirements.txt --user

Entorno:

python3 -m flask run

Yo seguí estos pasos y todo funcionó excelente!

  1. Instalar la ultima versión de python
  2. De ahí seguí este tutorial para crear el enviroment
  3. Añadí mis variables de entorno como lo indicó @jhonalexanderalvarezromero en este comentario
  4. Pobré el servicio con http://127.0.0.1:5000/carreras/test

Demando que este curso sea actualizado por el amor de dioooos!

Consejillos que puede ayudar para los que usen Windows 10 y PowerShell:

para usar el comando “conda”, usad la terminal de anaconda --> tecla windows y escribid anaconda prompt
para las variables de entorno desde powerShell, cambiar export por $env: ej. (export FLASK_APP=platzi-api --> $env:FLASK_APP=“platzi-api”
todo desde la carpeta raíz del proyecto

Espero que os sirva y funcione!!! 😄😄😄

Alguna razón para este error??

poker face los que no saben python, a instalarlo y tambien vscode entre otras dependencias. que pena con ellos mejor el profesor hubiera explicado esto con un video que perezoso y mal por los demas estudiantes.

Hola, andaba perdido, igual que varios que veo por aqui, les recomiendo https://www.youtube.com/watch?v=YYXdXT2l-Gg
así como https://www.youtube.com/watch?v=APOPm01BVrk; si no saben de Python como yo. Saludos.

Configuración de las variables de entorno de flask - WINDOWS 10:

<h1>En Anaconda Powershell Prompt</h1>

(platzi-mongo) PS C:\Paula\Cursos\Platzi\MongoDB\platzi-mongo> $env:FLASK_APP = “platzi-api”
(platzi-mongo) PS C:\Paula\Cursos\Platzi\MongoDB\platzi-mongo> $env:FLASK_ENV = “development”
(platzi-mongo) PS C:\Paula\Cursos\Platzi\MongoDB\platzi-mongo> $env:PLATZI_DB_URI = “mongodb+srv://platzi-admin:[email protected]
(platzi-mongo) PS C:\Paula\Cursos\Platzi\MongoDB\platzi-mongo> conda deactivate
(base) PS C:\Paula\Cursos\Platzi\MongoDB\platzi-mongo> conda activate platzi-mongo
(platzi-mongo) PS C:\Paula\Cursos\Platzi\MongoDB\platzi-mongo> flask run

  • Serving Flask app “platzi-api” (lazy loading)
  • Environment: development
  • Debug mode: on
  • Restarting with windowsapi reloader
  • Debugger is active!
  • Debugger PIN: 104-651-996
  • Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Hola, después de mucho batallar encontré este tutorial para instalar anaconda desde la terminal en MacOS porque por el instalador dio problemas:

https://towardsdatascience.com/how-to-successfully-install-anaconda-on-a-mac-and-actually-get-it-to-work-53ce18025f97

Esta fue la unica forma en que me sirvio a mi en windows xD

$env:FLASK_APP = "platzi-api"
$env:FLASK_ENV = "development"
$env:PLATZI_DB_URI = "mongodb+srv://<usuario>:<password>@curso-platzi.jpvum.mongodb.net"

asi se deben establecer las variables de entorno

set "FLASK_APP=platzi-api"
set "FLASK_ENV=development"
set "PLATZI_DB_URI=mongodb+srv://admins:[email protected]"```

Alguien me podría ayudar con este error que me está saliendo,(estoy en WIndows 10 y lo estoy haciendo a través de un ambiente virtual en Python)

Esto me sale en el CMD

(env) λ flask run
 * Serving Flask app "platzi-app" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 154-919-770
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [13/Aug/2020 22:37:59] "GET / HTTP/1.1" 500 -
Traceback (most recent call last):
  File "H:\Cursos\Data_Science\Mongodb\platzi-mongo\env\Lib\site-packages\flask\cli.py", line 325, in __call__
    self._flush_bg_loading_exception()
  File "H:\Cursos\Data_Science\Mongodb\platzi-mongo\env\Lib\site-packages\flask\cli.py", line 313, in _flush_bg_loading_exception
    reraise(*exc_info)
  File "H:\Cursos\Data_Science\Mongodb\platzi-mongo\env\Lib\site-packages\flask\_compat.py", line 35, in reraise
    raise value
  File "H:\Cursos\Data_Science\Mongodb\platzi-mongo\env\Lib\site-packages\flask\cli.py", line 302, in _load_app
    self._load_unlocked()
  File "H:\Cursos\Data_Science\Mongodb\platzi-mongo\env\Lib\site-packages\flask\cli.py", line 317, in _load_unlocked
    self._app = rv = self.loader()
  File "H:\Cursos\Data_Science\Mongodb\platzi-mongo\env\Lib\site-packages\flask\cli.py", line 372, in load_app
    app = locate_app(self, import_name, name)
  File "H:\Cursos\Data_Science\Mongodb\platzi-mongo\env\Lib\site-packages\flask\cli.py", line 245, in locate_app
    raise NoAppException(
flask.cli.NoAppException: Could not import "platzi-app".

Para este proceso no considero necesario utilizar anaconda ya que anaconda es muy pesado para un proyecto tan ligero. Preferiblemente utilizar virutalenv o containers. Yo en este caso he creado el mismo ambiente en un container. Mi repositorio publico es el siguiente:

https://github.com/chunfer/platzi-mongo

Para este se debe instalar docker y docker-compose.

Al clonar mi repositorio solo deben copiar el archivo ‘.env.example’ y crear un archivo nuevo llamado ‘.env’. Ya dentro de este archivo deben modificar las siguientes
variables:

USER=<TU_USUARIO>
PASSWORD=<TU_CONTRASEÑA>
ATLAS_URI=<TU_ATLAS_URI>

Una vez hecho esto pueden leventar el servidor:

docker-compose up -d 

Se levantará el servidor en localhost en el puerto 5000. Tambien pueden usar su IP de su equipo en vez de localhost.

Les super recomiendo ver el curso de Docker de Platzi.

Tambien vengo a quejarme muy mal explicado, es poco didactico, este curso es como de hace 2 años ya es para que hubieran corregido este asunto, queda muy mal platzi.

debería decir al menos en que sistema operativo aplica ejecutar esos pasos :V

Si el siguiente comando no funciona:

pip install -r requirements.txt

Prueba con:

pip3 install -r requirements.txt

Si estás trabajando desde Windows la mejor opciones es que con VSCode abras el proyecto crees el virtualenv, lo actives, instales los **requirements **y para la parte de las variables de entorno uses los siguientes comandos en la terminal de Powershell:

$env:FLASK_APP = "platzi-api" 
$env:FLASK_ENV="development"
$env:PLATZI_DB_URI=“MONGO-URI”

Es importante recalcar que estos valores se perderán una vez cerrada la terminal.

Se me hace imposible esto, NO tengo conocimientos de Postman, GitHub, Anaconda o Python.

Muy poco didáctico la forma en que se explica esta sección. Creo que faltan explicar mucho conceptos. Espere se mejore pronto para que sea mas comprensible.

Este pedazo debería tener vídeo para hacer el paso a paso correctamente

No se entiende esta parte!!! se está mezclando muchos conceptos apartes y perdí el foco. Se puede continuar el curso si no logré esto???

`(platzi-mongo) [[email protected]OEL704-MongoDB platzi-mongo]# pip
-bash: pip: command not found
(platzi-mongo) [[email protected] platzi-mongo]# conda deactivate
(base) [[email protected] platzi-mongo]# pip

Usage:
pip <command> [options]`

No me reconoce el comando pip cuando estoy con conda activado!

Windows 10
**Anaconda PowerShell Prompt **

A pesar de haber leído y probado las diferentes estrategias en los comentarios, stack, reddis, y demás no logro captar que está sucediendo caundo corro flask. ¿Alguien podría indicarme como puedo resolver este paso? Y muchas gracias!!

`(platzi-mongo) PS C:\Users\USUARIO\Alejandro-sin\Mongo_DB\platzi-mongo\platzi-mongo> flask run

  • Environment: production
    WARNING: Do not use the development server in a production environment.
    Use a production WSGI server instead.
  • Debug mode: off
    Usage: flask run [OPTIONS]

Error: Could not locate a Flask application. You did not provide the “FLASK_APP” environment variable, and a “wsgi.py” or “app.py” module was not found in the current directory.
(platzi-mongo) PS C:\Users\USUARIO\Alejandro-sin\Mongo_DB\platzi-mongo\platzi-mongo>`

Ojo, si tuviste error o algo no funcionó, te sugiero leas con calma todos los comentarios de la comunidad aquí debajo. Lee todos sin aplicar ninguna solución. Una vez hecho esto, podrás decidir cuál aplica a tu caso.

En mi caso, hasta que no reinicie mi terminal, pude ejecutar

conda list

Mira el comentario de AryRosvall para un tutorial al respecto.

Después, estaba haciendo mal un export. Debe utilizarse sin comillas.
Y al final, obtendrás un error 404 al consultar la dirección, ya que no hay frontend para la URL. Prueba por ejemplo con:
http://127.0.0.1:5000/carreras/test

por favor si alguien pudiese explicar una mejor forma de poder hacer este proceso, que en realidad no son claros.
gracias

Les comparto un pequeño script que realice para powershell y asi automatizar todas las tareas necesarias para correr este proyecto. Puedes copiar y pegar el codigo en powershell abierto en la raiz de tu proyecto o crear un archivo con extension .ps1 y ejecutarlo en powershell como .\nombreScript.ps1.
Espero que sea de utilidad.

Write-Host "Initializing project"
conda activate platzi-mongo
Write-Host "Conda virtual enviroment now active"
pip3 install -r requirements.txt
Write-Host "Requierements installed successfully"
$env:FLASK_APP="platzi-api"
$env:FLASK_DEBUG = 1
$env:FLASK_ENV = "development"
$env:PLATZI_DB_URI="mongodb+srv://milkton-admin:[email protected]?retryWrites=true&w=majority"
Write-Host "Environment configured successfully"
Write-Host "Configuration complete, waiting for flask run..."
Write-Host "."
Write-Host "."
Write-Host "."

flask run

Y de donde sacamos la dichosa URI? y por que el comd export no se reconoce? y porque nadie explicó lo de las variables? esto pudo haber estado más completo 😦 tengo horas batallando

Esta explicación dejó mucho que desear…

Para quienes están creando el ambiente virtual en Windows es python en lugar de python3

Por sugerencia, este módulo sería bueno tener un video de respaldo, hay poca explicación al respecto o no es muy entendible

yo queria con nodejs no se nada de python
seria bueno que tengan otra version con nodejs

Alternativas de postman son:
Insomnia (donde pueden descargar de forma portable): https://github.com/Kong/insomnia/releases/tag/[email protected]

Thunder Client (extensión para VSC): https://marketplace.visualstudio.com/items?itemName=rangav.vscode-thunder-client

Para quienes están cursando este 2021 y tengan problemas con la instalación del proyecto y su entorno Python.

  1. Descargar el repositorio del proyecto en cualquier lugar que ustedes deseen: git clone https://github.com/AERC18/platzi-mongo.git

  2. Opcional -> Instalar un enviroment de Python en sus ordenadores. Acá el tutorial: https://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/26/python-virtual-env/

3.- Intalar las dependencias (dentro del proyecto platzi-mongo):

$ pip install -r requirements.txt 

4.- Setear las variables de entorno del proyecto.

 $env:FLASK_APP = "platzi-api"
$env:FLASK_ENV = "development"
$env:PLATZI_DB_URI = "mongodb+srv://usuario:contraseñ[email protected]"

5.- Correr el proyecto!

$ flask run

Si a alguien con windows le da este error:
Error: Could not locate a Flask application. You did not provide the “FLASK_APP” environment variable,

(probablemente antes pusiste
set export FLASK_APP=platzi-api
set export FLASK_ENV=development
set export PLATZI_DB_URI=“MONGO-URI”)

Solo deben ponernuevamente las variables de entorno pero sin el export, es decir así

set FLASK_APP=platzi-api

set FLASK_ENV=development

set PLATZI_DB_URI=“MONGO-URI”

al parecer nunca voy a terminar una carrera o ruta de aprendizaje, vengo del curso Express.js debido a que no entendía la sintaxis de mongo y ahora en curso de mongo la practica esta en Python que al igual que mongo no tengo ni idea de la sintaxis y me tocaría invertir tiempo en otro leguaje o buscar un curso de mongo por otra plataforma y así me ha pasado con varios temas!

Tengo windows 10 y lo hice con cmder
Me funciono bien y expongo los pasos por si a alguien le interesa

En la consola desde el punto donde quiero crear mi carpeta, cree una carpeta llamada mongoDB:

mkdir mongoDB

y entre a esa carpeta

cd mongoDB

ya adentro clone el archivo dado en clase:

git clone https://github.com/AERC18/platzi-mongo.git

abri mi ambiente virtual(Yo tengo ya el alias creado como avenv), por lo que ejecute el comando:

avenv

Instale las dependencias:

pip install -r requirements.txt

Una vez se instalaron todas las dependencias, cree las variables de entorno:

set FLASK_APP=platzi-api
set FLASK_ENV=development
set PLATZI_DB_URI="MONGO-URI"

La MONGO-URI es diferente para cada uno y debe contener
"mongodb+srv://usuarioDeCadaUno:contraseñ[email protected]"
El mio dio asi:
set PLATZI_DB_URI=“mongodb+srv://platzi:[email protected]

Creadas las variables se ejecuta:

flask run

Espero que le sirva a alguien

Hola, para convertir de V1 a V2 me funciono la siguiente linea de comandos:

En Windows 10!

C:\Users\Mayitho Bustos R>postman-collection-transformer convert -i “C:\Users\Mayitho Bustos R\Desktop\ffcbfb5c8d5cd2dc52d2.json” -o “C:\Users\Mayitho Bustos R\Desktop\ffcbfb5c8d5cd2dc52d3.json” -j 1.0.0 -p 2.0.0 -P

Donde ffcbfb5c8d5cd2dc52d2.json es el nombre del json V1 y ffcbfb5c8d5cd2dc52d3.json es el nombre que le coloque de salida, puede ser el que deseen colocarle, pero se debe cambiar porque de lo contrario no deja convertirlo.

flask.cli.NoAppException
flask.cli.NoAppException: Could not import “platzi_api”.
alguien sabe por qué ocurre este error?

Una pequeña varada pero ya solucionado.

Postman genera un pequeño conflicto al importar la coleccion de la clase.

Simplemente deben seguie el siguiente tutorial.

  1. Correr el siguiente comando en la terminal, en mi caso que uso WSL2 es asi:
sudo npm install -g postman-collection-transformer

  1. Descargar la coleccion como archivo .json

  2. Abrir tu terminal en el directorio donde tienes el archivo .json descargado y renombrarlo. Ejemplo input.json

  3. Una vez lo anterior, correr el siguiente comando en la terminal:

postman-collection-transformer convert -i ./input.json -o ./output.json -j 1.0.0 -p 2.0.0 -P

Esto generara un archivo llamado output.json en el directorio.

  1. Cargar la coleccion como archivo en el Postman y listo.

si el siguiente comando no funciona en windows

pip install -r requirements.txt

probar de la siguiente manera:

python -m pip install -r requirements.txt

UNA VES ACTIVADO EL AMBIENTE EN ANACONDA: SI TU MAQUINA ES WINDOWS
conda activate platzi-mongo
pip install -r requirements.txt
set flask_app=platzi-api
set flask_env=development
set platzi_db_uri=mongodb+srv://[USUARIO]:[CONTRASEÑA]@[NOMBREENATLAS].brzcz.mongodb.net

ES RECOMENDABLE COPIAR LA MISMA URL DE ATLAS SIN EL /test PARA ASEGURARNOS UNA BUENA CONEXIÓN Y NO REPETIR TODOS LOS PASOS

por ultimo le damos:
flask run

DE SER TODO CORRECTO DIRIGIRSE A LA URL QUE DICE EN EL ANACONDA Y LE AGREGAN /carreras

Y LES DEBE SALIR UN JSON VACIO

DE SER CORRECTO YA ESTAMOS LISTOS PARA DIRIGIRNOS A LA SIGUIENTE CLASE (PARA LA INTERFAZ PUEDEN USAR VISUAL STUDIO CODE Y LE INSTALAN LA EXTENSIÓN DE Python).

Gracias

Clonar el repositorio de código con platzi-mongo

  1. Clonar el repositorio en el que se encuentra el código del proyecto platzi-mongo
    (Cree una cuenta en Github para poder clonar el repositorio)

  2. Ingresar a la carpeta platzi-mongo (Done)

  3. Teclear git branch -r este nos mostrará los branches con las soluciones por módulo a medida que vayamos avanzando durante el curso.
    (Aquí estoy atorado, ¿dónde se teclea eso?)

Muy poco didáctico este tema.

Ayuda!

Actualmente, el postman pide v2 y el enlace que archivó el profesor está en v1, me podrían ayudar a resolver eso por favor? Gracias.

Hice todos los pasos y cuando voy al enlace 127.0.0.1:5000 me sale error 404

//TO DO: Hacer el curso de Python 😃

Por favor, me pueden ayudar. Estoy en windows 10, seguí todas las indicaciones y al tratar de ejecutar flask run, me da esta respuesta:

(platzi-mongo) C:\Users\rc_fa\OneDrive\Documentos\nubia laboral\cursos platzi\Curso Basico MongoDB\Proyecto\platzi-mongo>flask run
"flask" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

Tuve muchos problemas al tratar de instalar Anaconda.
El problema fue que el nombre de usuario en la computadora tenía un espacio y eso me generaba errores.
Otro error que tuve fue al exportar las variables de entorno, como estoy en Windows, se reemplaza export por set y funciona bien (esta solución la vi en uno de los comentarios de los compañeros 💚).
Pero al fin ha quedado todo.

Si están en windows las variables de entorno no van entre comillas, no importa que al ingresar la variable de la uri de mongo les aparezca un error de que un comando no se reconoce

En windows para la parte de “pip” en la línea de comandos. Necesitan empezar con “python”, por ejemplo;
python pip install -r requirements.txt

Me aparece la leyenda “pip” no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

Ya intenté varias recomendaciones de lo comentarios y no sucede nada, alguien me podría ayudar???

Unas decadas despues jaja por fin!

Me encanta la forma en que éste profe explica, él es pausado y con detalle.

Otro dato a favor es usar ramas de Git 😊

deberian subie un video aparte explicando esta parte, para los que estamos tan perdidos.
o que curso tenemos que ver antes para no quedar tan perdidos.

Rayos batman! instale anaconda satisfactoriamente y quise ejecutar el comando y no reconoce el “conda”.
alguien tenia el mismo problema?

No logro correr la api, el hacerlo con:

flask run

Obtengo el error de que la carpeta platzi-api no existe:

Usage: flask run [OPTIONS]

Error: The file/path provided (platzi-api) does not appear to exist.  Please verify the path is correct.  If app is not on PYTHONPATH, ensure the extension is .py

Alguien ha logrado saltar este obstáculo?

OS: Linux Ubuntu 18.10
Python: 2.7

Logré instalar Anaconda2 y Postman sin problema.

Gracias anticipadas por el apoyo.

Saludos

Hola buen día, un favor, me pudieran orientar en el último paso de como exportar las variables, donde se realiza ese paso. Gracias

Para crear un entorno virtual con python 3.3+ lo haces de la siguiente manera:

conda create --name my-env python=3

Para activarlo :

conda activate my-env

Hola, me queda faltando el paso final, estoy usando windows

(platzi-mongo) C:\Users\ADRIAN\Documents\GitHub\platzi-mongo>set FLASK_APP=platzi-api

(platzi-mongo) C:\Users\ADRIAN\Documents\GitHub\platzi-mongo>set FLASK_ENV=development

(platzi-mongo) C:\Users\ADRIAN\Documents\GitHub\platzi-mongo>set PLATZI_DB_URI=mongodb+srv://(aca estoy usando mi usuario):(aca estoy usando mi password)@cluster0-qapf6.gcp.mongodb.net

(platzi-mongo) C:\Users\ADRIAN\Documents\GitHub\platzi-mongo>flask run

  • Serving Flask app “platzi-api” (lazy loading)
  • Environment: development
  • Debug mode: on
  • Restarting with windowsapi reloader
  • Debugger is active!
  • Debugger PIN: 205-680-132
  • Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    127.0.0.1 - - [17/Mar/2020 19:04:56] “GET / HTTP/1.1” 404 -
    127.0.0.1 - - [17/Mar/2020 19:04:56] “GET /favicon.ico HTTP/1.1” 404 -

Pero al abrir http://127.0.0.1:5000 sale 404 not found

Hola jovenes, alguien le da este problema ? como lo arreglaron. Saludos![](builtins.ModuleNotFoundError

ModuleNotFoundError: No module named ‘bson’

No puedo hacer correr el proyecto.

flask run

  • Environment: production
    WARNING: Do not use the development server in a production environment.
    Use a production WSGI server instead.
  • Debug mode: off
    Usage: flask run [OPTIONS]

Error: Could not locate a Flask application. You did not provide the “FLASK_APP” environment variable, and a “wsgi.py” or “app.py” module was not found in the current directory.

Estos usando mac Os para instalar las dependencias me dio este error:

⚡ pip install -r requirements.txt 
zsh: command not found: pip
(platzi-mongo) 

la solución es validar la versión de phyton que estas usando. con pip3 -V y si tienes la versión 3 corres el comando:

⚡ pip3 install -r requirements.txt

Aquí dejo la Documentación para instalar en Linux

Click Aqui

En windows es importante seguir todos los pasos desde Anaconda Powershell Prompt, para no tener errores o fallas al seguir la instalación y configuración.

Es necesario instalar pyton para que me reconosca el comando pip???

TENGO UNA DUDA.
Teclear git branch -r este nos mostrará los branches con las soluciones por módulo a medida que vayamos avanzando durante el curso. ¿DONDE HAGO ESO?

YEN Variables de entorno necesarias para ejecutar el proyecto

Para que el proyecto se ejecute sin errores es necesario exportar las variables de entorno que se muestran a continuación:

export FLASK_APP=platzi-api

export FLASK_ENV=development

export PLATZI_DB_URI=“MONGO-URI”

Reemplazar MONGO-URI por la URI de MongoDB atlas en el siguiente formato:
mongodb+srv://<TU-USUARIO>:<TU-CONTRASEÑA>@<TU-ATLAS-URI>

¿DÓNDE TENGO QUE MODIFICAR ESOS DATO? AYUDA POR FAVOR, SOY NUEVO EN ESTO Y NO ENTIENDO

Si alguien está interesado en comandos conda, esta página se ve buena
https://www.interactivechaos.com/recursos-educativos/comandos-conda

Si postman les parece pesado, prueben Insombia: https://insomnia.rest/

Tuve algunos problemas con el PLATZI_DB_URI y lo solucioné de la siguiente manera

  1. Ejecutar CMD como administrador

  2. Ir hasta el directorio de la aplicación en mi caso *cd c:\Users<mi usuario>\Desktop\platzi-mongo*

  3. Creamos el ambiente de conda: conda create --name platzi-mongo

  4. Activamos en ambiente de conda: conda activate platzi-mongo

  5. Instalar los paquetes de python pip install -r requirements.txt --user

  6. Para el caso de las variables de ambiente use las siguientes instrucciones:
    set FLASK_APP=platzi-app
    set FLASK_ENV=development
    set PLATZI_DB_URI=mongodb+srv://root-admin:<aqui va tu contraseña>@cluster0.38cow.mongodb.net/
    NOTA: la ultima variable no lleva comillas, únicamente la ruta tal cual la copias de compass

  7. flask run
    **NOTA 2:**Las variables de ambiente se destruyen al cerrar la consola, por lo que si lo haces es necesario volver a
    inicializar su valor

Solución en 2022 | ServerSelectionTimeoutError

  • Le recomiendo crear un script.sh para las variables de entorno
  • Versiones:
pip3 freeze
certifi==2018.11.29
Click==7.0
dnspython==1.16.0
Flask==1.0.2
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
pymongo==3.10.1
Werkzeug==0.14.1
python3 --version
Python 3.8.3```
  • Cambios a db.py:
  1. Agregar import certifi
  2. Cambios dentro del método db() con la línea client = MongoClient(CONNECTION_STRING, tlsCAFile=certifi.where())

from bson.json_util import dumps, ObjectId
from flask import current_app
import certifi
from pymongo import MongoClient, DESCENDING
from werkzeug.local import LocalProxy


# Este método se encarga de configurar la conexión con la base de datos
def get_db():
    #platzi_db = current_app.config['PLATZI_DB_URI']
    client = MongoClient('mongodb+srv://platzi-admin:[email protected]', tlsCAFile=certifi.where())
    return client.platzi

Si no me vuelvo ingeniero me vuelvo loco

Para la version de Python 3.9 el comando es

py -m venv venv

¡Qué genial es Python! ¡No lo odien! ¡Ámenlo como a Node JS !

Me parece mejor que este ejercicio se hubiera hecho en node en lugar de python ya que tanto mongo como node usan sintaxis parecidas…

Para los usuarios de Windows:

  • export FLASK_APP=platzi-api
  • export FLASK_ENV=development
  • export PLATZI_DB_URI=“MONGO-URI”

Por si les sale el error de “export” no se reconoce como comando
cambiar export por set, quedando así.

  • set FLASK_APP=platzi-api
  • set FLASK_ENV=development
  • set PLATZI_DB_URI=“MONGO-URI”

Tuve muchos problemas para lograr que levantara, es necesario hacer el video, es mucho mas facil

Entendido

Todo funcionando correctamente en WSL 😃