1

Cómo están? Estoy haciendo un curso y siguiendo los pasos de cada clase. Utilizo Visual Studio Code y he creado la siguiente carpeta:

WorkSpace

Ahora me están enseñando a crear varias clases en Python para representar el sistema de Uber, de forma muy basica.

En el archivo main.py importo y utilizo las clases Car y Account, que están todas en la misma carpeta. El código que utilizan en la clase es el siguiente, tal cual:

from car import Car
from account import Account

if __name__ == "__main__":
    print("Hola Mundo")

    car = Car("AMS234", Account("Andres Herrera", "ANDA876"))
    print(vars(car))
    print(vars(car.driver))

Errores:

unresolved import 'account' Python(unresolved-import) 
unresolved import 'car' Python(unresolved-import)

Modulo car.py:

from account import Account

class Car:
    id          = int
    license     = str
    driver      = Account("","")
    passegenger = int

    def __init__(self, license, driver):
        self.license    = license
        self.driver     = driver

Error:

unresolved import 'account'Python(unresolved-import)

Modulo account.py:

class Account:
    id          = int
    name        = str
    document    = str
    email       = str
    password    = str

    def __init__(self, name, document):
        self.name       = name
        self.document   = document

Lo que intenté fue, en la clase main.py ante poner "python." a los nombres de los módulos a importar, quedando:

from Python.car import Car  
from Python.account import Account.

Pero ahí apareció un nuevo error:

from Python.car import Car  
ModuleNotFoundError: No module named 'Python'

Y el mismo mensaje para el modulo account.py.

La variable PATH ya está configurada y cada vez que quiero ejecutar el programa en la consola escribo: cd Python/ y main.py.

No pude encontrar la solución en Google, como hacer que Python encuentre esos módulos a importar, que están en la misma carpeta que funciona como WorkSpace. Les agradecería su ayuda.

Marcelo1197
  • 21
  • 1
  • 1
  • 5
  • Tu primer import es correcto (el segundo intento no lo es), no creo que sea un error, el código es correcto tal como lo planteas, más bien creo que es un warning del linter de turno de vscode.Por cierto, estás haciendo un uso incorrecto de los atributos de clase, mirate: [Diferencia entre atributos de clase y atributos de instancia](https://es.stackoverflow.com/q/132561/15089). Parece que los uses para declarar los tipos de los futuros atributos de instancia? – FJSevilla Feb 26 '20 at 22:39
  • `from Python.car...` es incorrecto tal como tienes estructurada tu app ahora mismo como comento arriba, ejecuta `main.py` en PowerShell/CMD directamente pero con los imports originales `from car import Car` y `from account import Account` que si son correctos, no debería mostrar ninguna excepción. – FJSevilla Feb 26 '20 at 22:52

4 Answers4

3

Debes hacerlo de esta manera:

from Carpeta import NombreArchivo

Prueba así:

Clase main:

from Python import car
from Python import account

Clase car:

from Python import account
Julio Cesar
  • 3,150
  • 11
  • 17
  • 39
0

Te comento, a día de hoy, me ha parecido este mismo error, es que python busca en su librerias y después en sus carpetas. Yo he solucionado el problema de la siguiente manera.

import sys 
sys.path.append(r'direcion\\de\\tu\\proyecto\\o\\carpetamodulos\\paquetes')

ejemplo

sys.path(r'C:\\Users\pablo\\Desktop\\Proyect\\python')

Contesto por si alguno tiene este mismo problema

Christian
  • 9,428
  • 6
  • 13
  • 34
0

Yo he tenido el mismo problema y en esta guía he encontrado una guía detallada sobre como resolver esto.

Hay dos métodos. Como mencionan usando una usando

sys.path.append("tu directorio de donde quieres importar")

Y el segundo es exportando un ruta para que pueda encontrarla:

export PYTHONPATH=$PYTHONPATH:$(pwd)/<<"nombre del paquete">>

Te recomiendo que leas el artículo antes mencionado, para que comprendas a detalle como funcionan las importaciones en Python

el_xino
  • 16
  • 2
0

Debes añadir el fichero __init__.py en la carpeta del módulo. En este fichero debes añadir las sentencias que indican que parte del módulo son accesibles desde el resto de código del proyecto:

from tu_paquete.tu_modulo import tu_clase
Rubén Pozo
  • 101
  • 3