modulenotfounderror español ejemplo def __name__ __main__ python module python-3.6 python-import

python - español - ModuleNotFoundError: ¿Qué significa que__main__ no es un paquete?



main python 3 (4)

Hola, siga el siguiente paso, resolverá este problema. Si ha creado un directorio y un subdirectorio, siga los pasos a continuación y tenga en cuenta que todo directorio debe tener " init .py" para que sea reconocido como un directorio.

  1. "import sys" y ejecute "sys.path", podrá ver toda la ruta que está siendo buscada por python. Debe poder ver su directorio de trabajo actual.

  2. Ahora importe el subdirectorio y el módulo respectivo que desea usar usando import, siga este comando: " import subdir.subdir.modulename as abc " y ahora puede usar los métodos en ese módulo. ScreenShotforSameIssue

Como puede ver en esta captura de pantalla, tengo un directorio principal y dos subdirectorios y en el segundo subdirectorio tengo el módulo == CommonFunction y puede ver el lado derecho después de la ejecución de sys.path. Puedo ver mi directorio de trabajo

Estoy tratando de ejecutar un módulo desde la consola. La estructura de mi directorio es esta:

Estoy tratando de ejecutar el módulo p_03_using_bisection_search.py , desde el directorio problem_set_02 usando:

$ python3 p_03_using_bisection_search.py

El código dentro de p_03_using_bisection_search.py es:

__author__ = ''m'' from .p_02_paying_debt_off_in_a_year import compute_balance_after def compute_bounds(balance: float, annual_interest_rate: float) -> (float, float): # there is code here, but I have omitted it to save space pass def compute_lowest_payment(balance: float, annual_interest_rate: float) -> float: # there is code here, but I have omitted it to save space pass def main(): balance = eval(input(''Enter the initial balance: '')) annual_interest_rate = eval(input(''Enter the annual interest rate: '')) lowest_payment = compute_lowest_payment(balance, annual_interest_rate) print(''Lowest Payment: '' + str(lowest_payment)) if __name__ == ''__main__'': main()

Estoy importando una función que está en p_02_paying_debt_off_in_a_year.py cuyo código es:

__author__ = ''m'' def compute_balance(balance: float, fixed_payment: float, annual_interest_rate: float) -> float: # this is code that has been omitted pass def compute_balance_after(balance: float, fixed_payment: float, annual_interest_rate: float, months: int=12) -> float: # Omitted code pass def compute_fixed_monthly_payment(balance: float, annual_interest_rate: float) -> float: # omitted code pass def main(): balance = eval(input(''Enter the initial balance: '')) annual_interest_rate = eval( input(''Enter the annual interest rate as a decimal: '')) lowest_payment = compute_fixed_monthly_payment(balance, annual_interest_rate) print(''Lowest Payment: '' + str(lowest_payment)) if __name__ == ''__main__'': main()

Estoy teniendo el siguiente error:

ModuleNotFoundError: No module named ''__main__.p_02_paying_debt_off_in_a_year''; ''__main__'' is not a package

No tengo idea de cómo resolver este problema. Intenté agregar un archivo __init__.py , pero aún no funciona.


Intenta ejecutarlo como:

python3 -m p_03_using_bisection_search


Simplemente elimine el punto para la importación relativa y haga:

from p_02_paying_debt_off_in_a_year import compute_balance_after


Tengo el mismo problema que tú. Creo que el problema es que usaste la importación relativa en la importación en in-package import . No hay __init__.py en su directorio. Tan solo importa como Moisés respondió arriba.

Creo que el problema principal es cuando importas con un punto:

from .p_02_paying_debt_off_in_a_year import compute_balance_after

Es equivalente a:

from __main__.p_02_paying_debt_off_in_a_year import compute_balance_after

donde __main__ refiere a su módulo actual p_03_using_bisection_search.py .

Brevemente, el intérprete no conoce la arquitectura de su directorio.

Cuando el intérprete entra en p_03.py , el guión es igual a:

from p_03_using_bisection_search.p_02_paying_debt_off_in_a_year import compute_balance_after

y p_03_using_bisection_search no contiene ningún módulo o instancia llamado p_02_paying_debt_off_in_a_year .

Así que se me ocurrió una solución más limpia sin cambiar los valores del entorno de Python (después de buscar cómo funcionan las requests en la importación relativa):

La arquitectura principal del directorio es:

main.py

setup.py

--- problem_set_02/

------ __init__.py

------ p01.py

------ p02.py

------ p03.py

Luego escriba en __init__.py :

from .p_02_paying_debt_off_in_a_year import compute_balance_after

Aquí __main__ es __init__ , se refiere exactamente al módulo problem_set_02 .

Luego ve a main.py :

import problem_set_02

También puede escribir un setup.py para agregar un módulo específico al entorno.