Básicos del Lenguaje

1

Guía de instalación y conceptos básicos

2

Archivos y slides del curso práctico de Python

3

IMPORTANTE: Instalando Ubuntu Bash en Windows para facilitarte el seguimiento del curso desde Windows.

4

¿Qué es la programación?

5

¿Por qué programar con Python?

6

Operadores matemáticos

7

Variables y expresiones

8

Presentación del proyecto

9

Funciones

10

Usando funciones en nuestro proyecto

11

Operadores lógicos

12

Estructuras condicionales

Uso de strings y ciclos

13

Strings en Python

14

Operaciones con Strings en Python

15

Operaciones con strings y el comando Update

16

Operaciones con strings y el comando Delete

17

Operaciones con strings: Slices en python

18

For loops

19

While loops

20

Iterators and generators

Estructuras de Datos

21

Uso de listas

22

Operaciones con listas

23

Agregando listas a nuestro proyecto

24

Diccionarios

25

Agregando diccionarios a nuestro proyecto

26

Tuplas y conjuntos

27

Tuplas y conjuntos en código

28

Introducción al módulo collections

29

Python comprehensions

30

Búsquedas binarias

31

Continuando con las Búsquedas Binarias

32

Manipulación de archivos en Python 3

Uso de objetos y módulos

33

Decoradores

34

Decoradores en Python

35

¿Qué es la programación orientada a objetos?

36

Programación orientada a objetos en Python

37

Scopes and namespaces

38

Introducción a Click

39

Definición a la API pública

40

Clients

41

Servicios: Lógica de negocio de nuestra aplicación

42

Interface de create: Comunicación entre servicios y el cliente

43

Actualización de cliente

44

Interface de actualización

45

Manejo de errores y jerarquía de errores en Python

46

Context managers

Python en el mundo real

47

Aplicaciones de Python en el mundo real

Conclusiones finales

48

Python 2 vs 3 (Conclusiones)

Clases bonus

49

Entorno Virtual en Python y su importancia: Python en el mundo real

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Definición a la API pública

39/49
Recursos

En esta clase definiremos la estructura de nuestro proyecto PlatziVentas, los comandos, la configuración en nuestro setup.py y la instalaremos en nuestro entorno virtual con pip.

Aportes 168

Preguntas 45

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

No copie bien la “receta” del setup, y me tarde dos días en darme cuenta .
Aquí les dejo la receta bien escrita

from setuptools import setup


setup(
    name='pv',
    version='0.1',
    py_modules=['pv'],
    install_requires=[
        'Click',
    ],
    entry_points='''
        [console_scripts]
        pv=pv:cli
    ''',
)

Me desmotive bastante desde esta clase, creo que no se explica muchas con claridad, por lo que veo a muchos nos salieron errores que debieron ser validados previamente en la clase, la verdad es el curso que mas me ha decepcionado en lo que llevo de platzi. Creo que buscare profundizar en otro lado.

Al igual que en el curso básico de python cuando tratamos temas avanzados el curso va muy rápido y no nos muestran detalles, tampoco soluciones para los que estamos en windows, pero no voy a enfocar solo en las debilidades del curso ya que de verdad lo he disfrutado bastante, mi solución es utilizar el bash de Git y con el bash o linea de comandos dirigirse a la carpeta de Platzi-ventas, luego seguir estos pasos:

1- pip install virtualenv
2- python -m venv venv

Ahora ya tenemos creado el ambiente virtual, debemos activarlo:

Posicionados en la misma carpeta de Platzi-Ventas ingresamos en el dash el comando:

source venv/Scripts/activate

Ahora podemos seguir los pasos que el profe nos explica en el curso, esto lo encontre en el siguiente video:

Espero les funcione.

Se perdio todo el manejo en este punto, veniamos lento en cosas basicas y luego cuando se va a algo un poco mas complejo, el instructor da por sentadas muchas cosas y pasa demasiado rapido. Seria bueno que leyeran los comentarios de los estudiantes, no soy el unico que sintio que se perdio la calidad.

-----ENTORNO VIRTUAL EN WINDOWS----
luego seguí estos pasos.
1. pip Install virtualenv
2. Pip Install virtualenvwrapper-win:
**3. ** una vez echo esto anote el comando que dice el profe con una ligera modificación
estando en la carpeta “platzi-ventas” ejecuto el comando:
virtualenv --python=python venv

  1. si ya ha respondido la consola con done, ingreso a la carpeta con el nombre que se creo** “venv”**
    • **cd ** venv/Scripts

  2. ejecuto el archivo activate
    activate, inmediatamente inicializa el ambiente virtual tal como al profe!! EJ:
    … \CURSO PLATZI\CURSO_PYTHON_3\PLATZI-VENTAS\venv\Script> activate
    Y por fin ingresas al entorno virtual
    (venv) C:\Users…\CURSO PLATZI\CURSO_PYTHON_3\PLATZI-VENTAS\venv
     luego regresa a la carpeta donde esta es setup.py en la Carpeta PLATZI-VENTAS y ejecuta :
    pip install --editable .

Un millon de errores, hasta este punto no pude solucionar nada a pesar de haber tomado un curso previo de python. Como raro todos los cursos de platzi son a la carrera y bastante incompletos en sus partes mas complejas.

Si tuvieron algun error con virtualenv y estan usando windows esto me sirvio.

virtualenv venv
python -m venv venv
venv\scripts\activate

ni si quiera explican bien para que funciona el framework click, que sentido tiene?

HOLA! AL FINAL DESPUES DE COMO PUDIERON VER TODAS LAS PREGUNTAS QUE HICE, LES DEJO MI SOLUCIÓN! PARA TODOS LOS QUE ESTÁN EN

¡¡WINDOWS 10!!

  1. 0)Abrir la consola(cmd), y entrar a la carpeta que contiene todos
    los archivos y subdirectorios

  2. 1)python -m virtualenv <nombre del entorno>

  3. 2)venv\Scripts\activate.bat

  4. 3)pip install --editable .

  5. 4)where pv

Para quien presente errores

  1. Verifica que tengas instalado virtualenv .
    1)si no lo tienes usa pip3 install virtualenv
    2.Verifica que tengas creado y activado el ambiente virtual
    2.1) virtualenv nombre_entorno -p python3
    Para activarlo
    2.2)source nombre_entorno/bin/activate(para ubuntu)
    2.3) \env\Scripts\activate.bat(para windows)
    3.Dirigete a la carpeta donde tengas los archivos creados en la clase.
  2. ejecuta el codigo pip3 install --editable
    4.1)Debes tener instalado Click, si no es así ingresa pip3
    install click
    5.Por ultimo y no menos importante, verifica que tu dirección de directorio no tenga espacios
    /mnt/d/python/CRUD platzi/platzi ventas (esto esta mal)
    /mnt/d/python/CRUD_platzi/platzi_ventas(Asi debe estar)
    Solo cambia el nombre de esas carpetas y quitales los espacio

O saldra este error: bad interpreter: No such file or directory

En windows si no tienen virtual env


# pip install virtualenv
# python -m venv env
# .\env\Scripts\activate.bat
# .\env\Scripts\activate

# deactivate (este es para salir)

Para los que no tienen tree en su sitema: sudo apt-get install tree

El profesor da por hecho que tenemos mac y pone puntos y cosas que solo se utilizan en mac, ¿pero los de windows qué? Aparte ya tomé el curso anterior de python y fue exactamente igual y al llegar a este punto de ambiente virtual todo se complicó y avanza muy rápido como si supiésemos ya todo.

Instalen esto primero,

pip3 install virtualenv

sino les saldra un error al hacer

virtualenv --python=python3 venv

Me parece que no quedo muy claro el uso de click o al menos para mi no lo fue.

Aquí el archivo setup.py (Y)

from setuptools import setup

setup(
    name='pv',
    version='0.1',
    py_modules=['pv'],
    install_requires=[
        'Click',
    ],
    entry_poinst = '''
        [console_scripts]
        pv=pv:cli
    ''',
)

Esta clase hubiera sido mejor si se dividia en mas, para aprovechar de explicar todo con detalle, o hubieran dejado algo de documentacion para leer. Ni modo tocara googlear.
Ibamos muy bien, pero esta clase no me gusto mucho

Estos temas mas complejos tendrían que desarrollarse en 2 o 3 clases mínimo… No vale la pena así. Sirve poco y nada esto. Nadie viene sin saber este tema y termina teniendolo claro despues de esta clase. Es preferible leer documentación de Python y consultar con google.

Así con videitos de 15 minutos, superficiales, Platzi no tiene sentido. Youtube es gratis y mucho mejor que esto.

Comando para windows source venv/Scripts/activate

¿Cómo se crea un entorno virtual en la terminal de windows?

Mi corazón esta escrito en C así que quería usar un framework al que le tengo mucho cariño el cual es Qt por suerte es casi universal y funciona con Python
 
Bien el ejercicio de la lista de clientes lo hice con una interfaz grafica, me gusto como se ve 😄 si quiere puedes ver mi código y jugar con el, esta en mi github
 
aqui esta el codigo para consola:
–sin click-- XD

import sys
import os


CLIENTES = []

MENU_DICCIONARIO = {'N':'NOMBRE',
                    'P':'POSICION', 
                    'C':'COMPANIA',
                    'E':'EMAIL'}

BASE_TXT = './lista_de_clientes.txt'
BASE_TEMP = 'lista_de_clientes.temp'

def AbrirBase_Declientes():
    global BASE_TXT, CLIENTES

    try:
        with open(BASE_TXT,'r',encoding='utf-8') as __ARCHIVO__:
            base_de_clientes = __ARCHIVO__.read()

            limite = 0
            un_cliente = dict()

            un_dato_del_cliente = base_de_clientes.split(',')

            for index, dato in enumerate(un_dato_del_cliente):
                if index % 2 != 0:
                    un_cliente[un_dato_del_cliente[index - 1]] = dato
                    limite += 1
                if limite == 4:
                    CLIENTES.append(un_cliente)
                    un_cliente = dict()
                    limite = 0
    except FileNotFoundError:
        with open(BASE_TXT,'w',encoding='utf-8') as __ARCHIVO__:
            return

def GuardarBase_DeClientes():
    global BASE_TXT, CLIENTES

    with open('lista_de_clientes.temp','w', encoding='utf-8') as __ARCHIVO__:
        for cliente in CLIENTES:
            for llave, valor in cliente.items():
                __ARCHIVO__.write(f'{llave},{valor},')

    os.remove(BASE_TXT)
    os.rename(BASE_TEMP, BASE_TXT)



def Agrega_Cliente():
    global CLIENTES
    cliente = dict()
    print('por favor agrega:')
    for valor in MENU_DICCIONARIO.values():
        cliente[valor] = input(f'{valor} :')
    CLIENTES.append(cliente)
    Mostrar_Clientes()
    GuardarBase_DeClientes()


def Elimina_Cliente():
    print('Como desea localizar a su cliente a eliminar: ')
    cliente = busqueda_de_cliente()
    if cliente:
        accion =__Dame_comando(texto = 'deseas continuar [S]i / [TECLA] no : ')
        if accion == 'S':
            indice = cliente[0]
            if len(cliente) > 1:
                indice = __Dame_comando(cliente,'Elige el indice de quien deseas eliminar : ')

            CLIENTES.pop(indice)
            GuardarBase_DeClientes()


def Actualiza_Cliente():
    print('Localize su cliente para actualizar: ')
    cliente = busqueda_de_cliente()
    if cliente:
        accion = __Dame_comando(texto ="deseas hacer una actualizacion [S]i / [TECLA] no : ")
        indice = -1
        while accion == 'S':
            if indice == -1 and len(cliente) == 1:
                indice = cliente[0]
            elif indice == -1:
                indice = __Dame_comando(cliente,"Elige el indice de quien deseas actualizar : ")

            llave = __Dame_comando(MENU_DICCIONARIO,'que deseas actualizar :')
            CLIENTES[indice][llave] = input(f'actualiza {llave} : ')
            print('¿Quieres continuar ACTUALIZANDO a')
            Mostrar_Clientes([indice])
            GuardarBase_DeClientes()
            accion = __Dame_comando(texto='[S]i /[TECLA] no : ')


def busqueda_de_cliente():
     llave = __Dame_comando(MENU_DICCIONARIO,'Buscar por: ')
     valor = input(f'ingresa el {llave} : ')
     return Busca_Cliente(llave,valor,CLIENTES)

def Busca_Cliente(llave,valor,lista_de_diccionarios):
    print(f'{llave} : {valor}')
    cliente_localizado = []
    cliente_localizado = __localiza_por_medio_de(llave,valor,lista_de_diccionarios)
    if cliente_localizado:
        print('mostrando informacion: ')
        Mostrar_Clientes(cliente_localizado)
    else:
        print('el cliente no ha sido localizado')

    return cliente_localizado



def __localiza_por_medio_de(llave,valor,lista_de_diccionarios):
    objeto = valor.lower()
    indice = []
    for i , cliente in enumerate(lista_de_diccionarios):
        if cliente[llave] == objeto:
            indice.append(i)
    return indice
        

def Mostrar_Clientes(indice = None):
    global CLIENTES
    if indice == None:
        for ind, cliente in enumerate(CLIENTES):
            print(f'[{ind}] : ',end='')
            for llave, valor in cliente.items():
                print(f'[{llave} = {valor}]', end=' ')
            print("")
    else:
        for i in indice:
            print(f'[{i}] : ',end='')
            for llave, valor in CLIENTES[i].items():
                print(f'[{llave} = {valor}]',end=' ')
            print('')


MENU = '''
            BIENVENIDO
            ********************
            ¿Que desea realizar?
            [I]ngresar cliente
            [B]uscar cliente
            [E]liminar cliente
            [A]ctualizar cliente
            [M]ostrar clientes
            [TECLA] para salir
            '''


def Interfaz():
    AbrirBase_Declientes()
    while True:
        print('')
        comando = __Dame_comando(texto=MENU)
        if comando == 'I':
            Agrega_Cliente()
        elif comando == 'B':
            busqueda_de_cliente()
        elif comando == 'E':
            Elimina_Cliente()
        elif comando == 'A':
            Actualiza_Cliente()
        elif comando == 'M':
            Mostrar_Clientes()
        else:
            break


def __Dame_comando(menu_de_intercion = None, texto = ''):
    while True:
        print(texto)
        if type(menu_de_intercion) == dict:
            for llave , valor in menu_de_intercion.items():
                print(f'[{llave}] : [{valor}] ')
        comando = input().upper()
        if type(menu_de_intercion) == dict:
            try:
                return menu_de_intercion[comando]
            except KeyError:
                pass
        elif menu_de_intercion == None:
            if len(comando) == 1:
                return comando.upper()
        elif type(menu_de_intercion) == list:
            try:
                if int(comando) in menu_de_intercion:
                    return int(comando)
            except ValueError:
                pass
        print('intentalo de nuevo ')


if __name__ == "__main__":
    Interfaz() ```

A mí no me funcionó hasta que puse el main en el archivo pv.py

@click.group()
@click.pass_context

def cli(ctx):
     
    ctx.obj = {}


cli.add_command(clients_commands.all)

if __name__=='__main__':
    cli()

a mi me da error de que no existe comando pv, pero si lo instalé

C:\Users\AORUS\Documents\Python\PyVentas (master -> origin)
(PyVentas) λ pv --help
"pv" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
C:\Users\AORUS\Documents\Python\PyVentas (master -> origin)
(PyVentas) λ ls -ltr
total 68
drwxr-xr-x 1 AORUS 197609     0 Nov  3 20:19 Include/
-rw-r--r-- 1 AORUS 197609 11558 Nov  4 02:27 LICENSE
-rw-r--r-- 1 AORUS 197609    39 Nov  4 02:27 README.md
-rw-r--r-- 1 AORUS 197609  3934 Nov 14 01:42 main.py
-rw-r--r-- 1 AORUS 197609    38 Nov 14 01:46 clients.csv
drwxr-xr-x 1 AORUS 197609     0 Nov 20 23:39 clients/
-rw-r--r-- 1 AORUS 197609   178 Nov 21 00:45 pv.py
drwxr-xr-x 1 AORUS 197609     0 Nov 21 01:16 tcl/
drwxr-xr-x 1 AORUS 197609     0 Nov 21 01:16 Lib/
drwxr-xr-x 1 AORUS 197609     0 Nov 21 01:16 Scripts/
-rw-r--r-- 1 AORUS 197609   233 Nov 21 01:27 setup.py
drwxr-xr-x 1 AORUS 197609     0 Nov 21 01:33 pv.egg-info/

si intento instalar nuevamente, me sale que ya existe. Help!!

C:\Users\AORUS\Documents\Python\PyVentas (master -> origin)
(PyVentas) λ pip install --editable .
Obtaining file:///C:/Users/AORUS/Documents/Python/PyVentas
Requirement already satisfied: Click in c:\users\aorus\documents\python\pyventas\lib\site-packages (from pv==0.1) (7.0)
Installing collected packages: pv
  Found existing installation: pv 0.1
Cannot remove entries from nonexistent file c:\users\aorus\documents\python\pyventas\lib\site-packages\easy-install.pth

Para el comando de listar los clientes les recomiendo la libreria tabulate

tabulate 👈

Se puede usar de la siguiente manera:

from tabulate import tabulate

# otros comandos...

@clients.command()
@click.pass_context
def list(ctx):
    """Show the list of all the clients"""
    client_service = ClientsService(ctx.obj['clients_table'])
    clients_list = client_service.list_clients()

    click.echo(tabulate(clients_list, headers='keys', tablefmt='fancy_grid'))

La verdad venía super motivado hasta esta clase, me sentí tremendamente ignorante de una clase a otra. Literalmente no pude hacer nada como el profesor, tocó con los comentarios de personas, muchas gracias a todos ellos. Sin embargo, activo el ambiente, pero al usar los comandos de pv clients --help, se ejecuta pero no me sale nada ¿Alguien sabe por qué?

Para virtualenv y su uso, salten a la última clase de este curso: 7. Clase bonus. Entorno Virtual en Python y su importancia: Python en el mundo real. A continuación una lista de pasos con las correcciones para Windows:

# Para inicializar tu virtual enviroment en Windows:
#   1. Para instalar virtualenv:
#       pip install virtualenv
#   2. Para verificar que está instalado:
#       where virtualenv
#   3. Lleva tu proyecto a una cartera cuya ruta no contenga ningún espacio.
#   4. Inicializar el ambiente virtual estándo en la carpeta de tu proyecto:
#       virtualenv --python=python3 venv
#   5. Activar el ambiente virtual:
#       call venv/Scripts/activate
#   6. Listar paquetes instalados en el ambiente virtual:
#       pip freeze
#   7. Instalar Click en el ambiente virtual (verificar después con paso 6.):
#       pip install click
#   8. Crea en el directorio de tu proyecto el archivo requeriments.txt. Usa
#      cualquiera de los métodos para esto en windows (bloc de notas -> Archivo
#      -> Guardar, clic derecho -> Nuevo -> Documento de texto).
#   9. Para verificar desde consola la creación de requeriments.txt:
#       dir
#   10. Vuelve al paso 6, copia y pega los resultados en requeriments.txt,
#       guarda y sal.
#   11. Para instalar en otra ocasión o en otro equipo el mismo ambiente
#       virtual en el que trabajas:
#        pip install -r requeriments.txt

which en Windows es where

Muy mal llevada esta clase. Que cambio de cómo se venía llevando el curso. No funciona nada.

Alguien me puede explicar con un poco más de detalle que hace @click.pass_context y como se comporta el “ctx”? No me quedó muy claro

se me hizo muy curioso, estaba viendo esta clase en la noche, creo que lo agotado/cansancio que tenía no entendí un carajo. juegue un rato y me fui a dormir.
Madrugue a ver de nuevo la clase. y buum nena, entendí todo ajajaj

from clients import commands as clients_commands

para los que tengan este problema, de acuerdo a la documentacion de python

dentro de la carpeta clients agreguen un archivo vacio llamado

__init__.py

para que “clients” sea considerado un modulo

Saludos!

La clase de Virtual environments esta al final de todo (y se da como sabido)…

Si, yo tampoco entiendo porqué.

Si usas el bash de windows 10, tendras que hacer el ambiente virtual de forma normal, sin apuntar a python 3 para no generar un error de tipo bad interpreter no such file or directory /usr/bin/python

En windows:

  1. Instalar virtualenv
  2. En la linea de comandos, situarse en la carpeta del proyecto.
  3. Crear el ambiente virtual así:
    virtualenv venv
    Esto creará una carpeta con el nombre venv dentro de la carpeta del proyecto.
    4.Activar el ambiente virtual ejecutando el archivo activate que se encuentra en la carpeta venv
    …\carpetaProyecto\venv\Scripts\activate
    5.El ambiente virtual iniciará :
    (venv) …\carpetaProyecto\venv\Scripts\activate

para salirse del entorno virtual basta con poner en consola deactivate

Gente después de unas horas deliberando, encontré este video
https://www.youtube.com/watch?v=IqckBcs7yk4
""" con ello pude instalar y hacer correr el programa “”"
Otra cosa, al parecer sería muy recomendable llevar el curso de python (anterior) para entender mejor, porque ahí hay una clase sobre Entorno virtual.
Concuerdo con muchos comentarios, lo siento mal estructurado, debería mejorar o sentar bien las bases para aprender (es mejor recomendar llevar cursos previos para empezar este; a decir que cualquiera lo puede llevar)

En caso que tengan algun problam con virtualenv pueden guiarse en esta pagina:

[]https://flask.palletsprojects.com/en/1.1.x/installation/ 😃

Hola comunidad, a los que vienen en busca de soluciones a la lista de errores que les sale (o al menos a los que a mi me salió), es la siguiente:
Yo uso Windows 10, a los que los comandos difieren a los distintos sistemas operativos.
si no tienes instalado el entorno virtual debes empezar por ahi

pip install virtualenv

el siguiente paso es crear el entorno virtual para este proyecto en si,

py -m venv venv

una vez creada el entorno vamos activar

.\venv\Scripts\activate

para comprobar que este activado debe salir la palabra (venv) en la linea de comando
Una vez activado se instala el paquete Click, a mi me marco un monton de error mientras seguia la clase por no tener instalado el paquete, y se instala con el siguiente comando:

pip install click

ahora a corregir los errores en la codificacion, en el archivo pv .py, en los decoradores quitar los parentesis (debe quedar asi @click.group), y en la ultima linea debe quedar

cli.add_command(clients_commands.all)

en el archivo commands .py, tambien se deben sabar los parentesis de los decoradores.
Y con eso debe ser todo, ahora seguir con

pip install --editable .

y probar si todo esta bien con

which pv

y

pv --help

y ya no deben dar errores.
Espero les sirva, un abrazo y a no desanimar, yo se que estuvo dificil esta clase, por que como Freddy, grite tambien QUE ES ESTO!!! al saltar esos errores larguisimos y empece a investigar y solucionar por que al final del dia es eso lo que haremos a diario, solucionar los problemas.
A no perder el enfoque, estamos para ayudarnos!!

jejeje veo gente muerta, digo gente confundida en windows, si estan usando cmder como consola, y ya hicieron todo pero no les encuentra ni el comando which, deben dentro de cmder ejecutar bash, con el comando bash enter. ahi su consola se convierte en una bash y ya con eso pueden ejecutar el resto de comando como si estuvieran en linux

Hola a todos
para los que no les funciona los comandos tal cual como va el profesor:
virtualenv --python=python3 venv
me salía un error que no encontraba un archivo , etc, etc.
El error según mi criterio es que de cursos anteriores se había instalado y utilizado entornos virtuales. por lo que generaba algún conflicto. yo reinicie mi computador(medida extrema), pero luego consultando mire que solo había que eliminar la carpeta venv ( o nombre de algún entorno virtual que hayan creado ustedes)


pc@Hernan:~$ rm -rf venv
Ojó que la elimine de la carpeta del usuario: en mi caso pc.


después de eso me dirigí a la carpeta “plartzi-ventas” y ahí fue donde instale el entorno virtual como lo hace en esta clase sin problemas.


pc@Hernan:~/curso_Python3-14-what-is-oop/platzi-ventas$ virtualenv --python=python venv


pc@Hernan:~/curso_Python3-14-what-is-oop/platzi-ventas$ source venv/bin/activate
(venv) pc@Hernan:~/curso_Python3-14-what-is-oop/platzi-ventas$ pip install --edi
table .


(venv) pc@Hernan:~/curso_Python3-14-what-is-oop/platzi-ventas$

como quisiera que en los cursos de Python Platzi cambiara de profesor. la verdad no se si el problema es mío pero me cuesta demasiado trabajo entenderle a este profesor

como que le faltó decir que debes instalar pip install click v: en tu entorno virtual

no entendi nada, muchos comandos y nada funciono, o esta desactualizado el curso, o esos comando ya no funcionan con python 3.8

si quieres usar tree en mac y tienes home brew instalado corre

brew install tree

Hola, me instala pv pero después cuando ejecuto el comando es como si no existiera.

Mi terminal se ve asi, Abajo dice: bash: pv: command not found

mbp-de-julian:platzi-ventas juliansantos$ virtualenv --python=python3 venv
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Vers
ions/3.7'
New python executable in /Users/juliansantos/Documents/Platzi/Curso_de_Python/plat
zi-ventas/venv/bin/python3.7
Also creating executable in /Users/juliansantos/Documents/Platzi/Curso_de_Python/p
latzi-ventas/venv/bin/python
Installing setuptools, pip, wheel...
done.
mbp-de-julian:platzi-ventas juliansantos$ spurce
bash: spurce: command not found
mbp-de-julian:platzi-ventas juliansantos$ source venv/bin/activate

(venv) mbp-de-julian:platzi-ventas juliansantos$ pip install --editable .
Obtaining file:///Users/juliansantos/Documents/Platzi/Curso_de_Python/platzi-venta
s
Collecting Click (from pv==0.1)
  Using cached https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d725710
4c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl
Installing collected packages: Click, pv
  Running setup.py develop for pv
Successfully installed Click-7.0 pv
(venv) mbp-de-julian:platzi-ventas juliansantos$ which pv
(venv) mbp-de-julian:platzi-ventas juliansantos$ pv --help
bash: pv: command not found

Estos son mis archivos:
pv.py

import click

from clients import commands as clients_commands

@click.group()
@click.pass_context
def cli(ctx):
    ctx.obj = {}


cli.add_command(clients_commands.all)

commands.py

import click

@click.group()
def clients():
    """Manages the clients lifecycle"""
    pass


@clients.command()
@click.pass_context
def create(ctx, name, company, email, position):
    """Creates a new client"""
    pass


@clients.command()
@click.pass_context
def list(ctx):
    """List all clients"""
    pass


@clients.command()
@click.pass_context
def update(ctx, client_uid):
    """Updates a client"""
    pass



@clients.command()
@click.pass_context
def delete (ctx, client_uid):
    """Deletes a client"""
    pass


all = clients

setup.py

from setuptools import setup

setup(
    name='pv',
    version='0.1',
    py_modules=['pv'],
    install_requires=[
        'Click',
    ],
    entry_poinst = '''
        [console_scripts]
        pv=pv:cli
    ''',
)

Alguna idea de qué puede estar pasando?

Muchas gracias de antemano.

Cada vez que escribo pv --help, me da este error 😦

Este clase es un poco mas avanzada que los demas he visto muchos comentarios que piensan lo mismo si es asi no te desanimes en estos momentos yo realmente no entiendo que es lo que se esta haciendo mas sin embargo pienso buscar mas informacion acerca de ello y de ser necesario volver a otras clases, lo importante es seguir aprendiendo y intentarlo se que duele pero es la unica salida al aprendizaje, saludos a todos♥

Alguien sabe una excelente pagina web para aprender o dibujar ASCII art? Para hacer interfaces de comandos 😃

Me aparece cuando ejecuto pv --help que click no existe , como hago para que lo pueda utilizar.

el archivo de setup.py seria algo similar a package.json en el caso de javascript ?
en el caso de importar dependencias todas deberian ir en Install_requires ?

Tengo el siguiente error al ejecutar pv --help:

from clients import commands as clients_commands
ImportError: No module named clients

que puede ser??

Este video me despejó muchas dudas acerca módulo click

https://www.youtube.com/watch?v=kNke39OZ2k0

Buenas gente, una recomendacion para los que esten usando vim como IDE, para ser un poco mas agiles con su uso, pueden instalar tmux que es un multiplexador de la terminal(muchas terminales en una sola terminal), ademas de ello pueden ponerle algunos plugins a vim con la ayuda de vundle, esto sumado a algunos features que vienen por defecto en vim, hara que tengan una exelente herramienta para programar en cualquier lenguaje.

add_command es un método de click

add_command(cmd, name=None)
Registers another Command with this group. If the name is not provided, the name of the command is used.

fuente:
Documentación de click

Hola!
Les hago un aporte a quien haya tenido el mismo problema que yo tuve.
Resulta que yo seguí todo el procedimiento como esta en el vídeo en la parte en la que:

  1. creo el ambiente virtual con virtualenv venv
  2. activo el ambiente con source venv/bin/activate
  3. instalo pv con pip3 install --editable .
  4. Se me hace la instalación normal, ejecuto which pv y me muestra el directorio donde esta, pero al darle pv --help me sale error dado a que dice que /mnt/c/Users/DanielFelipe/Google : bad interpreter: No such file or directory y lo que veo es que un directorio para acceder a la carpeta donde tengo el programa tiene espacio, y estos espacios no los detecta.

Por lo que mi solución al problema fue que en la carpera venv/bin edite el archivo activate que originalmente estaba sin los backlashes () cuando hay espacio: VIRTUAL_ENV="/mnt/c/Users/DanielFelipe/Google Drive/Platzi/Curso de Python/platzi_ventas/venv" y lo cambie por esto: VIRTUAL_ENV="/mnt/c/Users/DanielFelipe/Google\ Drive/Platzi/Curso\ de\ Python/platzi_ventas/venv", lo guarde y después pude ejecutar mi programa normalmente.

La solución la conseguí del siguiente link: https://github.com/pypa/virtualenv/issues/53

Saludos

Uff se ve buena la cosa.
Por si se perdieron o no entendieron muy bien, traten de buscar información por otros medios, creo que no hay una plataforma de aprendizaje 100% perfecta, algunos no explican bien, otros meten tremendos saltos, pero bueno, todo hace parte de la educación virtual, duele más pero aprendes más. Aprovechemos la cantidad de información que hay en internet para complementar o entender mejor temas nuevos como los de esta clase.

para las personas que utlizan Windows es un poco diferente…

-primero deben instalar venv

pip install virtuallenv```

-ya que este este instalado sigan con el comando
virtuallenv --pyhton=python3 venv (ojo 'pyhton3 es el nombre de un directorio es el caso del profesor en tu caso puede ser otro verifica tu path en windows

- luego ya instalado en lugar del comando source en Windows equivale a call 


call venv/Scripts/activate```
(dentro de scripts esta activate verifica si ese es tu caso)

y se supone que deberias estar ya ready to continue.

https://docs.hektorprofe.net/python/distribucion/setuptools/
Encontre este link donde explican mas como funciona la libreria setuptools

Pregunto, el comand TOUCH me da un error, no se si dependera del sistema operativo, como podri solucionar el problema?
gracias

Alguien sabe que hacer si te marca como advertencia:
unresolved import clients
Porfavor necesito ayuda!!!

Pues yo estuve batallando para ejecutar el comando pv --help, basicamente porque instale todo en windows y al parecer el virtualenv estaba teniendo problemas para encontrar clients, y me daba Error al encontrar el modulo, pero despues de mucho revisar encontre que era por el virtual env, entonces solo tuve que agregar la ruta actual al sys path para que pudiera encontrar el modulo y funciono, solo tuve que agregar estas dos lineas antes de import commands as clients\_commands `import sys` `sys.path.append("")`
Buenas tardes Como menciono Pedro Julio Rozo Castañeda la única forma que me funcionó para ejecutar comandos Click en Windows fue añadiendo la funcion cli en main que agrega los comandos. if \_\_name\_\_=='\_\_main\_\_': cli()
```js Activar un entorno virtual en Python en Windows con virtualenv sigue un proceso similar al de otros sistemas operativos, pero con algunos comandos específicos de Windows. Aquí tienes los pasos para activar un entorno virtual con virtualenv: Instalar virtualenv: Si aún no has instalado virtualenv, puedes hacerlo usando el siguiente comando en tu terminal o símbolo del sistema: bash Copy code pip install virtualenv Crear un entorno virtual: Navega a la ubicación donde deseas crear tu entorno virtual y ejecuta el siguiente comando: bash Copy code python -m virtualenv nombre_del_entorno Esto creará un directorio llamado nombre_del_entorno que contiene todos los archivos necesarios para tu entorno virtual. Activar el entorno virtual: Para activar el entorno virtual, usa el siguiente comando en la terminal o símbolo del sistema: PowerShell: bash Copy code .\nombre_del_entorno\Scripts\Activate Command Prompt: bash Copy code .\nombre_del_entorno\Scripts\activate Después de ejecutar este comando, verás que el prompt cambia y muestra el nombre de tu entorno virtual, indicando que el entorno virtual está activo. Desactivar el entorno virtual: Puedes desactivar el entorno virtual en cualquier momento ejecutando el siguiente comando: bash Copy code deactivate Esto restaurará tu entorno a la configuración predeterminada de Python. Recuerda que debes tener Python instalado en tu sistema y que el entorno virtual debe crearse en un directorio separado para mantener la organización de tus proyectos. ```Activar un entorno virtual en Python en Windows con `virtualenv` sigue un proceso similar al de otros sistemas operativos, pero con algunos comandos específicos de Windows. Aquí tienes los pasos para activar un entorno virtual con `virtualenv`: 1. **Instalar virtualenv:** Si aún no has instalado `virtualenv`, puedes hacerlo usando el siguiente comando en tu terminal o símbolo del sistema:bashCopy codepip install virtualenv 2. **Crear un entorno virtual:** Navega a la ubicación donde deseas crear tu entorno virtual y ejecuta el siguiente comando:bashCopy codepython -m virtualenv nombre\_del\_entorno Esto creará un directorio llamado `nombre_del_entorno` que contiene todos los archivos necesarios para tu entorno virtual. 3. **Activar el entorno virtual:** Para activar el entorno virtual, usa el siguiente comando en la terminal o símbolo del sistema:Después de ejecutar este comando, verás que el prompt cambia y muestra el nombre de tu entorno virtual, indicando que el entorno virtual está activo. * **PowerShell:**bashCopy code.\nombre\_del\_entorno\Scripts\Activate * **Command Prompt:**bashCopy code.\nombre\_del\_entorno\Scripts\activate 4. **Desactivar el entorno virtual:** Puedes desactivar el entorno virtual en cualquier momento ejecutando el siguiente comando:bashCopy codedeactivate Esto restaurará tu entorno a la configuración predeterminada de Python. Recuerda que debes tener Python instalado en tu sistema y que el entorno virtual debe crearse en un directorio separado para mantener la organización de tus proyectos.
Compañeros le comparto para instalar virtualenv en windows y en la carpeta CMD o sus terminales, 1. Deben verivicar que python este intalado con este comando python --version, ```js python --version ```si no esta instalado lo instalan desde la terminal, yo lo tenia instalado en Visual Studio code pero no en la terminal y por eso no podia instalar virtualenv. 2. Despues de comprobar que hayan instalado python ahora intstalamos virtualenv con los siguientes comandos, Nota: donde dice "nombre\_del\_entorno" en las lineas de los comandos ustedes colocan el nombre que deseen yo coloque "crud" y lo reempalce cada vez que aparece "nombre\_del\_entorno " 3. **Instalar virtualenv:**pip install virtualenv Si aún no has instalado `virtualenv`, puedes hacerlo usando el siguiente comando en tu terminal o símbolo del sistema:```js pip install virtualenv ``` 4. **Crear un entorno virtual:**python -m virtualenv nombre\_del\_entorno Navega a la ubicación donde deseas crear tu entorno virtual y ejecuta el siguiente comando:```js python -m virtualenv nombre_del_entorno ``` 5. **Activar el entorno virtual:** Para activar el entorno virtual, usa el siguiente comando en la terminal o símbolo del sistema **PowerShell:**```js .\nombre_del_entorno\Scripts\Activate ```**.\nombre\_del\_entorno\Scripts\Activate** 6. **Desactivar el entorno virtual:**Puedes desactivar el entorno virtual en cualquier momento ejecutando el siguiente comando:**** deactivate```js deactivate ```

Creo que hasta esta clase venia a un ritmo, y luego acelero precipitadamente para los que veniamos acostumbrados a que explique casi todo.

Esto es un claro ejemplo de Abstraction jajaj lo que sé es que si coloco en ese orden mis documentos puedo compartirlo para que otro lo instale en su ambiente, y así darle honor al nombre de la clase API pública

Ambientes virtuales

A todos los compañeros que utilizan windows les recomiendo probar WSL (permite correr linux desde windows)

Les comparto el link oficial de microsoft :https://learn.microsoft.com/es-es/windows/wsl/install

TRUCO VIM:

Para abrir todos los archivos podemos usar el siguiente comando:

vim -p  pv.py setup.py clients/commands.py

Para movernos entre los archivos podemos usar los comandos de VIM gt y gT.

Si les da error de modulso nombrados utilicen este comando:

python setup.py develop

Una pequeña sugerencia: si están utilizando venv en vez de virtualenv, lo mejor es usar este último para evitar futuros conflictos con las librerías que instalen en su entorno virtual.

Pueden crear los archivos y carpetas más rápido con los siguientes comandos en la terminal:

mkdir -p platzi-ventas/clients

El parámetro -p de mkdir, permite crear carpetas anidadas

touch platzi-ventas/clients/commands.py platzi-ventas/pv.py platzi-ventas/setup.py

Al comando touch se le pueden pasar los archivos que desees crear separado por espacios. Además puedes especificar el path o la ruta donde quieres que ese archivo se cree, como se puede apreciar en la ejecución del comando anterior.

Como nota final, el profesor hace uso de un programa de terminal que es necesario instalar y lo pueden hacer con el comando:

apt install tree

En el caso de que estén utilizando alguna distribución linux basada en debian que tenga el gestor de paquetes apt

Documentación de Command Line Interface Creation Kit, o CLICK, para Python.

Wellcome to Click

Bueno hasta aquí llegue yo, no se que pude hacer mal… cuando ejecuto el Which pv

El curso es bastante antiguo y sí, tiene sus errores, sin embargo, no deja de ser un curso de buena calidad. Para aquellos a quienes les presente problemas el entorno virtual, si bien venv es una buena herramienta, no es la única, en mi caso venv no me funciona correctamente debido a unos ajustes personalizados que tengo en mi laptop, pero buscando y siguiendo las recomendaciones de los cursos previos usé Anaconda funciona perfecto y es mucho más amigable si recién se están acostumbrando a la terminal.

Para que todo me funcionara utilice la terminal de ubuntu, tengo windows 10, lo que hice fue instalarla desde Microsoft Store

A mi me funcionó correctamente todo bien, hay que tener en cuenta que los archivos no tengan el minimo error.

Si tiene problema con el entorno virtual les dejo un notion que hice:Como instalar pyenv en Ubuntu

Hay que tener en cuanta que click es un framework, por lo tanto se debe instalar antes de ser usado.
Para window se hace con pip install click.
Recuerden tener el ambiente virtual arriba para que solo se instale en el proyecto y no globalmente.

Cuando vi la estructura que maneja click, no pude evitar en pensar en discord,py. Si entienden como funciona click, pueden usar la librería discord,py para hacer un bot de Discord, ya que casi literalmente es la misma estructura para los comandos. Hacer un bot de Discord es divertido, se los recomiendo como práctica.
Nota: cuando hablo de discord,py, realmente va con . en vez de , pero el sistema de comentarios no me dejaba ponerlo así jajaja.

Yo creo q hay mucha gente que solo mira los videos como si fuesen de youtube y consideran que lo aprendieron, vos no podes esperar que hasta el mas mínimo detalle te lo expliquen y no tener q recurrir nunca a la documentación ni a hacer ejercicios por tu cuenta. Para mi la gente que se queja de que esta mal explicado seria la misma que en la universidad se queja de que los mandaron a leer un libre.
Mi pregunta seria ¿Dedicas mas, menos o las mismas horas a la teoria y a la practica? Respondiendo esto se van a dar cuenta de donde esta su error
Jeje salu2, pocas cosas en la vida te van a venir en bandeja de plata a veces hay que dar un poco mas de que estamos dispuestos

0)Abrir la consola(cmd), y entrar a la carpeta que contiene todos
los archivos y subdirectorios

1)python -m virtualenv <nombre del entorno>

2)venv\Scripts\activate.bat

3)pip install click

3)pip install --editable .

Considerar que venv tiende a generar entornos duros, es decir, si mueves el directorio del entorno a otro este dejará de funcionar a menos que se reemplacen las rutas duras dentro del mismo, en su lugar virtualenv mantiene rutas relativas en todo momento lo que permite mover los proyectos y sus entornos sin este inconveniente.

Tienen que tener en cuenta el concepto de entornos virtuales y las librerías pip, para entender que si una librería no les funciona es porque no la han descargado, y lo pueden hacer desde el comando pip, chequen las clases de entornos virtuales con Facundo: https://platzi.com/clases/2255-python-intermedio/36458-que-es-un-entorno-virtual/

Muy bien, para los que ese les complica el estar utilizando los decoradores les recomiendo que practiquen, hagan 100 pruebas o las que necesiten utilizando decoradores para conocer su comportamiento, una vez conozcan el comportamiento de los decoradores podrán entender un poco más qué es lo que le está haciendo click a nuestras funciones. Lo que sí tiene que mejorar de esta clase es que se nos tiene que dar una explicación más profunda del comportamiento interno de click, no hasta los fundamentos, simplemente abrir un poco el cofre de click: https://www.youtube.com/watch?v=7yJbMfQMvRQ&ab_channel=codigofacilito les adjunto este material que puede ser de ayuda

Hola a todos, veo que tienen dudas y se sienten un poco confundidos con algunas cosas, no se si ustedes estan haciendo la ruta de Desarrollador Backend con Django, pero antes de este curso hay 2 mas uno basico muy bueno, el otro sobre Python y usan la version 2 y alli estan muy bien explicadas los temas que en estos momentos ustedes estan confundidos… por lo general son los mismos puntos, pero creanme que tengo mas que claro todo y vale la pena hacerlos.

para los que tienen un error de este tipo:

[cli.add_command(clients_commands.all)
AttributeError: ‘function’ object has no attribute 'add_command]

En mi caso el problema solo era que debía agregarle al decorador click.group un paréntesis al final para que quede así : click.group()

Para poder realizar esta clase es requisito haber tomado El curso de Python intermedio

Podemos hacer un alias para llamar a la vez varios objetos o variables.

Los subdirectorios en el mundo de Python, se conocen como módulos.

Cada uno de lor archivos del proyecto, tiene que tener un nombre legible y tiene que funcionar para algo muy en específico

Como instalar ambientes virtuales en python 3+

  1. Ingresa al CMD y crea o muevete a la carpeta en donde deseas instalar el virtualvenv
  2. Una vez alli si es tu primera vez o para evitar errores deberias aplicar este comando
                  python.exe -m pip install --upgrade pip
  1. Momento de la instalacion, deberemos escribir el siguiente comando
python -m venv [la ruta de nuestra carpeta]

#Quedaria asi

python -m venv C:\Users\ZeroBits\Desktop\crud_python\platzi-ventas
  1. Verificar que todo fue instalado correctamente con el comando “ls -a” alli veras archivos nuevos creados tales como Scripts, Lib, etc

  2. Ahora para activar en W10, tienes que colocar el siguiente comando

Scripts\activate.bat 

Si estas en otros sistemas operativos como linux o MacOS

source bin/activate
  1. Listo ya deberias tener instalado totalmente el ambiente virtual

Generar ambiente virtual env Python 3.9 en window:

* Entras a CMD.

* Entras a tu carpeta con el comando cd.

* Ingresa el comando “py -m pip install virtualenv”.

* Pones el comando py -m venv nombre_de_tu_espacio_virtual".

* Colocas "nombre_de_tu_espacio_virtual\Scripts\activate"

* Por último, tipeas “pip install nombre_de_librería”

* pip freeze, para ver todas los modulos que 

* Deactive, para desactivar

IMPORTANTE Si te sale un mensaje de warning de que debes actualizar el pip, este es el comando:

* python.exe -m pip install --upgrade pip

Creo que las clases van en buen ritmo, sólo que hay una ruta que seguir, quizá deberían decir cuales son los cursos como requisito para poder tomar y sobre todo entender este.
Estoy tomando la ruta de Desarrollo Backend y estoy entendiendo bien lo que está haciendo, igual si me surgen dudas me apoyo buscando en google o incluso, volviendo a ver la clase donde explica ese tema que me está causando conflicto.

A lo largo de mis cursos en platzi, he notado que hay mucho conocimiento que dan por sentado o que ya se sabe, por suerte he estudiado programacion en python antes y comprendo la mayoria de los conceptos de los que hablan aca(estoy haciendo la ruta de desarrollo con django), sinceramente la plataforma me parece muy buena como para entregar el conocimiento “principal” por asi decirlo, pero siempre hace falta complementar para darle contexto, no lo digo para criticar platzi, es mas me parece que tiene buenos profesores, nada mas es una opinion que creo que puede ayudar a otros alumnos, no se conformen con lo que vean en clase, busquen mas informacion y por sobre todo practiquen! No hay mejor profesor que la practica y el error y aprender de esos errores!!!

Excelente!!

Usando el bash de linux en windows 10, me da un error

(venv) rb@LAPTOP:/mnt/d/Google Drive/Python2018/platzi-ventas$ pv --help
-bash: /mnt/d/Google Drive/Python2018/platzi-ventas/venv/bin/pv: "/mnt/d/Google: bad interpreter: No such file or directory

Buenas amigos.
Al ejecutar pv --help se genera el siguiente error:
intérprete erróneo: No existe el fichero o el directorio

No se si estoy pasando algo por alto. Gracias por la colaboración

Cuando hago $ pv --help me sale el siguiente error:
<pre>File "/home/alvezgr/Documents/projects/platzivta/pv.py", line 10, in <module>
cli.add_command(clients_commands.all)
AttributeError: 'function' object has no attribute 'add_command'
</pre>

alguna solución?