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 elproblem_set_02
directorio usando:
$ python3 p_03_using_bisection_search.py
El código dentro 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
el código:
__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 __init__.py
archivo, pero todavía no funciona.
eval(input(...
bit fue sugerido por 2to3. Tenía que hacerme eso hoy. contento de no seguirla de sugerencias blindling
eval(input...
probablemente no sea una gran idea. Simplemente lo analizaría en lugar de abrir la oportunidad para la ejecución de código arbitrario.