ModuleNotFoundError: What does it mean __main__ is not a package?
我试图从控制台运行一个模块。我的目录结构如下:
。
我尝试从
1 | $ python3 p_03_using_bisection_search.py |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | __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() |
号
我正在导入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | __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() |
我收到以下错误:
1 | ModuleNotFoundError: No module named '__main__.p_02_paying_debt_off_in_a_year'; '__main__' is not a package |
。
我不知道如何解决这个问题。我已经尝试添加一个
只需删除相对导入的点,然后执行以下操作:
1 | from p_02_paying_debt_off_in_a_year import compute_balance_after |
我和你有同样的问题。我认为问题是你在
我认为核心问题是当你用一个点导入时,比如:
相当于:
我们都知道,
问题来了:
当解释器进入
江户十一〔七〕号
显然,
简而言之,解释器不知道您的目录体系结构。
因此,我提出了一个更干净的解决方案,而不更改Python环境中的贵重物品(在查找了相对导入中请求的方式之后):
目录的主要结构是:
埃多克斯1〔10〕
江户十一〔11〕。
——
——埃多克斯1〔1〕。
——埃多克斯1〔14〕。
——埃多克斯1〔15〕。
——埃多克斯1〔16〕。
然后在EDOCX1[1]中写入:
1 | from .p_02_paying_debt_off_in_a_year import compute_balance_after |
号
这里
然后去
埃多克斯1〔22〕
您还可以编写一个
尝试将其运行为:
埃多克斯1〔24〕
您好,请按照以下步骤操作,您将解决此问题。如果您已经创建了目录和子目录,那么按照下面的步骤操作,请记住所有目录都必须有"in it.py"才能将其识别为目录。
"import sys"并运行"sys.path",您将能够看到python正在搜索的所有路径。您必须能够看到当前的工作目录。
现在,使用import导入子目录和要使用的各个模块,请执行以下命令:"import subdir.subdir.modulename as abc",现在可以使用该模块中的方法。屏幕截图或照片问题
正如您在这个屏幕截图中看到的,我有一个父目录和两个子目录,在第二个子目录下,我有module==commonfunction在执行sys.path之后,您会看到右边,我可以看到我的工作目录。