Python,导入模块

时间:2018-07-12 00:21:04

标签: python python-3.x

我正在学习python,我在导入模块/软件包时遇到了问题 好吧,我正在尝试制作一个包含一些模块的软件包,但问题是:* .py文件相互依赖 这是主要.py文件的代码

import suite_syracuse.altitude as alt
import suite_syracuse.duree_vol as dure
N=int(input("Veuillez rentrer le premier terme de la suite ")) 
print("le numero de la vol est ",N,"\nson altitude est ",alt.Altitude(N))

当我运行它时,我会得到

Traceback (most recent call last):
File "./afficher_vol.py", line 2, in <module>
import suite_syracuse.altitude as alt
File "/home/daly/Workshop/Python/suite_syracuse/altitude.py", line 2, in <module>
import Next
ModuleNotFoundError: No module named 'Next'

这是Package体系结构:

 Workshop/Python/suite_syracuse:
-rwxr-xr-x 1 **** ****  158 juil. 12 00:36 altitude.py                                                                                                          
-rwxr-xr-x 1 **** ****  151 juil. 12 00:27 duree_vol.py                                                                                                                                                   
-rw-r--r-- 1 **** ****    0 juil. 11 22:28 __init__.py                                                          
-rwxr-xr-x 1 **** ****  109 juil. 12 00:34 Next.py  
-drwxr-xr-x 2 **** **** 4096 juil. 12 00:37 __pycache__

最后是height.py文件:

#!/usr/bin/python3.7
import Next
def Altitude(N):
 L=[]
 while Next.suiv(N)!=1:
 L.append(Next.suiv(N)) 
 N=Next.suiv(N)
return max(L) 

谢谢你们:)

2 个答案:

答案 0 :(得分:1)

我发现wat错了,我必须放入一个导入文件,因为它是

import suite_syracuse.Next 

了解

import Next

无论如何:)

答案 1 :(得分:0)

默认情况下,导入是绝对导入。因此,import Next正在寻找一个名为Next的顶级模块,这不是您想要的。

但是,当您尝试在同一软件包中导入另一个模块时,通常不需要绝对导入,而需要相对于当前软件包的导入:

from . import Next

如果您确实希望绝对导入,则需要指定顶级软件包(或者,对于更深层嵌套的模块,请使用完整路径),以从以下位置导入:

from suite_syracuse import Next

或者,当然,您可以这样做:

import suite_syracuse.Next

…但是,您还必须更改代码以调用suite_syracuse.Next.suiv而不是Next.suiv


在官方教程的Modules下对此进行了全部解释,但在本章的各处都有些分散。 (大部分内容都在Intra-package References中,但是如果不先阅读本章其余部分的一半,您将找不到,甚至无法理解。)

您可能会发现阅读PEP 328(添加了当前相对导入语法的语言更改建议)更有用,该建议为设计提供了很多背景知识,以及您想使用的时间和原因的背景绝对进口还是相对进口。